Ruby - 错误:“意外的keyword_end,期待$ end”

时间:2014-01-24 19:39:21

标签: ruby twitter raspberry-pi

首先,我是红宝石的新手,所以如果我做了一些不常规的话我会道歉。我只是想运行一个与twitter交互的简单脚本。它在我的macbook上运行得很好,但是当我尝试在我的覆盆子pi上运行它时,我得到了这个错误:“意外的keyword_end,期待$ 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

非常感谢任何帮助或指导!


好的,所以我只是从我的另一台计算机上复制了我的代码,它运行正常。我不知道发生了什么事,因为当我第一次带它时,我从未真正摆弄它。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

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

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

开始评论代码。这是最简单的一个编辑器,它允许您突出显示一个代码块并用一个命令注释掉它(例如,在Emacs中,c-C c-C切换是否突出显示的块被注释掉)。从您最近进行修改的代码部分开始(如果您不确定,请检查您的版本控制系统以查看您已更改的内容)。选择它的一部分 - 也许是一半,以便评论。确保你的评论属于一个 - 例如,不要注释掉一半的循环 - 注释掉整个事情。

现在加载你的程序。你还得到语法错误吗?如果没有,你刚刚确定它必须在哪里。获取您注释掉的一些代码,然后取消注释。如果是这样,找到另一个代码块并将其注释掉。

泡沫,冲洗重复。

您不必担心程序是否运行 - 如果加载时没有语法错误,由于所有注释掉的代码,它无疑会失败。你所要做的就是找出语法错误的位置。

答案 1 :(得分:0)

有趣的故事......之前我遇到了同样的错误,这让我开了一个小时的NUTS。不开玩笑。我拒绝放弃。我只是想不出来!为什么错误?我的代码是在点。

然后....我碰巧碰到向下滚动条只是为了看到已经有一个“结束”插入下面就像2行下来!我在屏幕上看不到它。有一个额外的!!! SMH ...

一旦我把它拿出来......我的“捆绑执行耙试验”通过了。有时这是小事:):/ / p>

答案 2 :(得分:-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 @'

除非某些东西等同于if!something

除非不需要end