2017-11-15 7 views
0

루비 콘솔에서 Twitter API를 사용하는 명령을 실행하려고하면 NameError: uninitialized constant Twitter 오류가 발생합니다.NameError : 초기화되지 않은 상수 Twitter

나는이 이름을 twitter.rb으로해서는 안되기 때문에이 이름을 twitterFeed.rb으로 지정했습니다. 이 파일은 내 config/initializers 폴더에 있습니다. 나는 bundle install을 이미 돌렸고, 라인 gem 'twitter', '~> 6.2'은 내 보석 파일에있다. 당신이 당신의 코드를 실행하는 대신 레일 콘솔의 irb을 사용하려는처럼

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 
+0

'$ LOAD_PATH'에 둘 이상의'twitter.rb'가 있습니까? 이전 실험에서 비어있는 'twitter.rb'가있을 수 있습니다. – tadman

+0

파일 이름은 전통에 따라 모두 소문자 여야합니다.'twitter_feed.rb'가 당신이 가지고있는 것보다 낫습니다. – tadman

+0

@ tadman 어떻게 확인할 수 있습니까? 죄송합니다. 저는 초보자입니다. –

답변

0

는 것 같습니다. irb (또는 pry)을 실행하면 실제로 Rails 환경을로드하지 않으므로 사용할 수있는 보석이 없습니다. 수동으로 요구할 수 있지만 여전히 Rails 환경에 액세스 할 수는 없습니다.

대신 무엇을하고 싶은지 rails console (또는 간단히 rails c)입니다. IRB와 예를 들어

는 트위터가로드되지 않았습니다 :

rails c
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)>' 

, 그것은 잘 작동합니다 : 당신은 당신의 초기화에서 그 require의 모든 걸릴 수 있습니다

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

- Rails는 그 시점까지 자동으로 보석을 요구할 것입니다. Rails로 콘솔 작업을 할 때는 rails console을 사용해야합니다.

+1

도움과 의견에 감사드립니다. –