2013-11-27 14 views
10

Dostaję błąd z skryptem Ruby za pomocą klejnotu "twitter". Część mojego skryptu, który produkuje ten błąd jestBłąd z Ruby Twitter API

require 'twitter' 
require 'net/http' 
require 'json' 

#### Get your twitter keys & secrets: 
#### https://dev.twitter.com/docs/auth/tokens-devtwittercom 
Twitter.configure do |config| 
    config.consumer_key = 'xxxxxxx' 
    config.consumer_secret = 'xxxxxxx' 
    config.oauth_token = 'xxxxxx' 
    config.oauth_token_secret = 'xxxxxxx' 
end 

Błąd mówi undefined method 'configure' for Twitter:Module (NoMethodError) Jednak „twitter” i perełki „json” są zarówno w moim gemfile więc nie jestem pewien, dlaczego ta metoda będzie niezdefiniowana .

+0

jaka wersja gem są używasz? Jego stwierdzenie w dokumentacji, że konfiguracja odbywa się za pośrednictwem Twitter :: REST :: Client.new method – Zippie

+0

W moim pliku Gemfile.lock jest napisane "twitter (5.0.0)" – user1893354

+1

postępuj zgodnie z dokumentacją tutaj: https: // github.com/sferik/twitter – Zippie

Odpowiedz

17

Robisz to w "starym" stylu. Począwszy od wersji 5 konfiguracja globalna nie jest już dostępna. Zasadniczo musisz przekazać parametry konfiguracyjne podczas inicjowania klienta.

Na przykład:

client = Twitter::REST::Client.new do |config| 
    config.consumer_key  = "YOUR_CONSUMER_KEY" 
    config.consumer_secret  = "YOUR_CONSUMER_SECRET" 
    config.access_token  = "YOUR_ACCESS_TOKEN" 
    config.access_token_secret = "YOUR_ACCESS_SECRET" 
end 

A potem po prostu korzystać z tego klienta, aby wykonać kwerendy, takie jak:

client.sample do |tweet| 
    puts tweet.text 
end 

Aby uzyskać więcej informacji odnoszą się jedynie do Sferik's Twitter Gem

+3

Jeśli chciałbym uzyskać listę najnowszych 4 tweetów, w jaki sposób mogę to zrobić? Nie mogę uzyskać dostępu do klienta w żadnym z kontrolerów, ponieważ "klient" dostaje do mnie NameError - ta dokumentacja mnie frustruje. Nie wyświetlają żadnego kodu kontrolera ... – Peege151