NameError: Uninitialized constant Twitter

NameError: Uninitialized constant Twitter

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

我将其命名为 twitterFeed.rb,因为我读到它不应该命名为 twitter.rb。此文件放在我的 config/initializers 文件夹中。我已经有 运行 bundle installgem '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

看起来您正在尝试使用 irb 而不是 Rails 控制台来 运行 您的代码。当您从 运行 到 irb(或 pry)时,您实际上并没有加载 Rails 环境,因此 none 的 gem 将可用。您可以手动要求它们,但您仍然无法访问 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