2014-01-24 67 views
0

首先,我是新来的红宝石,所以我道歉,如果我做了一些不是传统的东西。我只是试图运行一个简单的脚本,与twitter进行交互。它在我的MacBook上运行得非常好,但是当我尝试在我的树莓派上运行它时,出现此错误:“意外的keyword_end,期待$结束。”我发现涉及这个错误的帖子,但我不觉得这些答案对我有帮助。

它主要是把我扔掉,因为它没有发生在我的Mac上。

这是脚本(或至少它的一部分),我有问题:

#encoding: UTF-8 

require 'tweetstream' 
require 'rubygems' 
require 'oauth' 
require 'json' 

puts TweetStream::VERSION 

c_key   = 'xxxx' 
c_secret  = 'xxxx' 
oa_token  = 'xxxx' 
oa_token_secret = 'xxxx' 

TweetStream.configure do |config| 
     config.consumer_key  = c_key 
     config.consumer_secret = c_secret 
     config.oauth_token  = oa_token 
     config.oauth_token_secret = oa_token_secret 
     config.auth_method  = :oauth 
end 

consumer_key = OAuth::Consumer.new(c_key, c_secret) 
access_token = OAuth::Token.new(oa_token, oa_token_secret) 

client = TweetStream::Client.new 

keywords = ['word','word'] 

client.userstream do |status| 
     if keywords.any? {|str| status.text.downcase.include? str} && status.user.id.to_s != '11111111111' 

       unless status.text[0,4].include? 'RT @' 

         puts "#{status.id}: #{status.text}\n" 

       end 
     end 
end 

任何帮助或指导将不胜感激!


好吧,我只是从我的另一台计算机上复制了我的代码,它工作的很好。我不知道发生了什么,因为当我第一次带它时,我从来没有真正摆弄过它。感谢您的帮助!

+1

你可以给完整的错误堆栈吗?我在这部分看不到任何错误.. –

+0

只是位置,后面提出的一些改变是最后的'结束',然后是“语法错误,意想不到的关键字结束,期待结束输入。” – john324156

+0

给出完整的错误堆栈,从您的编辑器复制并粘贴在这里.. –

回答

-1

变化

unless status.text[0,4].include? 'RT @' 
    puts "#{status.id}: #{status.text}\n" 
end 

到:

if !status.text[0,4].include? 'RT @' 
    puts "#{status.id}: #{status.text}\n" 
end 

或:

puts "#{status.id}: #{status.text}\n" unless status.text[0,4].include? 'RT @' 

除非东西,如果事情

除非并不需要一个相当于。

+1

是吗?见[这里](http://ruby-doc.org/docs/keywords/1.9/) –

+0

对不起没用过除非这样。 –

+0

即使如此,如果你把'puts“#{status.id}:#{status.text} \ n”除非status.text [0,4] .include? 'RT @'会消除一个'end'标签,更接近发现问题。 –

0

如何寻找难以捉摸的语法错误在Ruby中

我不会告诉你在哪里你的语法错误是,但我会告诉你如何找到答案。

开始注释掉代码。这最简单的方法是用一个编辑器来完成,该编辑器允许突出显示一段代码并用一条命令将其注释掉(例如,在Emacs中,c-C c-C切换是否突出显示的块被注释掉)。从您最近进行修改的部分代码开始(如果您不确定,请检查您的版本控制系统以查看您所做的更改)。选择其中的一部分 - 也许一半来发表评论。确保你评论的是属于一起 - 例如,不要评论一半时间 - 评论整个事情。

现在加载你的程序。你还会得到语法错误吗?如果不是,你刚刚确定了它的位置。拿一些你注释掉的代码,并取消注释。如果是这样,找到另一个代码块并将其注释掉。

泡沫,漂洗重复。

您不必担心程序是否运行 - 如果加载时没有语法错误,则无疑会因为所有注释掉的代码而失败。你正在做的是找出语法错误的位置。

0

有趣的故事....我以前有过同样的错误,它使我坚果像一个小时。没有开玩笑。我拒绝放弃。我只是无法弄清楚!为什么错误?我的代码是on-point。

然后....我恰巧打开向下滚动条,只看到已经有一个“结束”插入下面像2线下来!我无法在屏幕上看到它。有一个额外的! Smh ...

一旦我把它拿出来......我的“捆绑EXR测试”通过。有时候,这是小东西:)

相关问题