未初始化的常量Twitter :: REST(NameError)

时间:2016-10-11 14:59:09

标签: ruby twitter rubygems

因此,我在尝试运行此代码时遇到未初始化的常量错误:

require 'twitter'
require 'json'

client = Twitter::REST::Client.new do |config|
 config.consumer_key = ENV['TWITTER_CONSUMER_KEY']
 config.consumer_secret = ENV['TWITTER_CONSUMER_SECRET']
 config.access_token = ENV['TWITTER_ACCESS_TOKEN']
 config.access_token_secret = ENV['TWITTER_ACCESS_TOKEN_SECRET']
end

我环顾四周找到了this issue,但它似乎并不适用,因为我的文件名是twitterFeed.rb。然后我认为可能是与宝石的一些不匹配的版本。所以我跑了清理,但后来它告诉我我错过了宝石,并重新安装了旧版本的twitter宝石。 所以我有twitter(5.16.0,4.8.1)正在运行。不确定从何处开始确定Twitter :: REST未初始化的原因。

非常感谢任何见解。

编辑: 经过一些重新评估后,我可能会有不匹配的依赖。

我在控制台上看到了这个: /Users/elizabethbartscherer/.rvm/gems/ruby-2.2.1/gems/twitter-4.8.1/lib/twitter/cursor.rb:51:警告:循环参数参考 - 集合 法拉第:: Builder现在是Faraday :: RackBuilder。

2 个答案:

答案 0 :(得分:0)

推荐的方法是在项目目录中设置Gemfile,使用Bundler,如下所示:

source 'https://rubygems.org'

gem 'twitter'
gem 'json'

然后运行bundle install

在您的twitterFeed.rb文件中,将其添加到文件顶部,如下所示:

require 'rubygems'
require 'bundler/setup'

require 'twitter'
require 'json'

client = Twitter::REST::Client.new do |config|
 config.consumer_key = ENV['TWITTER_CONSUMER_KEY']
 config.consumer_secret = ENV['TWITTER_CONSUMER_SECRET']
 config.access_token = ENV['TWITTER_ACCESS_TOKEN']
 config.access_token_secret = ENV['TWITTER_ACCESS_TOKEN_SECRET']
end

然后再次尝试运行您的脚本:ruby twitterFeed.rb

答案 1 :(得分:0)

我解决了这个问题。我没有意识到,当使用bundler时,它会创建gem.lock文件并且我管理了我的依赖项。删除文件并重新安装修复了问题。