NameError:未初始化的常量Twitter

时间:2017-11-15 22:18:35

标签: ruby-on-rails ruby twitter rubygems

当我尝试在ruby控制台中运行任何使用Twitter API的命令时,我收到错误NameError: uninitialized constant Twitter

我已将此命名为twitterFeed.rb,因为我读到它不应该命名为twitter.rb。此文件位于我的config/initializers文件夹中。我已经运行bundle install,行gem 'twitter', '~> 6.2'在我的gem文件中。

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

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试使用irb而不是Rails控制台来运行您的代码。当您运行irb(或pry)时,您实际上并没有加载Rails环境,因此没有任何宝石可用。您可以手动要求它们,但您仍然无法访问Rails环境。

您要做的是使用rails console(或简称为rails c)。

例如,使用irb,Twitter尚未加载:

rails_dir » irb
2.2.4 :001 > Twitter
NameError: uninitialized constant Twitter
    from (irb):1
    from /Users/bbugh/.rvm/rubies/ruby-2.2.4/bin/irb:11:in `<top (required)>'

使用rails c,它可以正常工作:

rails_dir » rails c
Loading development environment (Rails 5.0.1)
2.2.4 :001 > Twitter
=> Twitter

您可以从初始化程序中取出所有require - Rails将在此时自动生成宝石。当您使用Rails进行控制台工作时,只需使用rails console