人生やまあり

大学卒業後IT会社に就職してITをやってます。

ruby gemの新しいtwitterをインストールしたら、またまた認証方法が変わってた!(twitter-5.7.1)


<スポンサードリンク>

新しくAmazonLinuxでインスタンス作って、twitterのbotをつくろうと思ってインストール。

yum update -y
yum install -y ruby ruby-devel ruby-lib rubygems
yum groupinstall -y "development tools"
gem install twitter
gem install system_timer

それぞれのバージョンなどは下記ののような感じ。

[root@myhost ~]# ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
[root@myhost ~]# gem -v
1.8.25
[root@myhost ~]# gem list

*** LOCAL GEMS ***

addressable (2.3.5)
atomic (1.1.15)
buftok (0.2.0)
equalizer (0.0.9)
faraday (0.9.0)
http (0.5.0)
http_parser.rb (0.6.0)
json (1.8.1)
memoizable (0.4.1)
multi_json (1.9.0)
multipart-post (2.0.0, 1.2.0)
naught (1.0.0)
oauth (0.4.7)
simple_oauth (0.2.0)
system_timer (1.2.4)
thread_safe (0.2.0)
twitter (5.7.1)
[root@myhost ~]#

早速いままで通り認証用のconfig.yamlとテストツイートスクリプトtesttweet.rbを作成。

[config.yaml]

con_key : your_consumer_key
con_sec : your_consumer_key_secret
access_key : your_access_key
access_sec : your_access_key_secret

[testtweet.rb]

#!/usr/bin/ruby
require 'rubygems'
require 'twitter'
require 'yaml'

key  = YAML.load_file( "config.yaml" )
client = Twitter.configur::Client.new do |config|
  config.consumer_key       = key["con_key"]
  config.consumer_secret    = key["con_sec"]
  config.access_token        = key["acc_key"]
  config.access_token_secret = key["acc_sec"]
end
client.update("test tweet!!")

実行してみる。

[root@myhost ~]# ruby testtweet.rb
testtweet.rb:9: undefined method `config' for Twitter:Module (NoMethodError)
[root@myhost ~]#

ガ━━(;゚Д゚)━━ン!!
いままで普通に動いていたのになぜか動かない。。。。。。

gemのtwitterのバージョンが5系にあがっていたので、あやしいと思ってドキュメントみてみたら、、、、

File: README — Documentation for twitter (5.7.1)

なんと!!!!またまた認証方法が変わってる・・・・・。

<変更前>
client = Twitter.configur::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

↓
<変更後>
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

ということで、変更してみて実行
[testtweet.rb]

#!/usr/bin/ruby
require 'rubygems'
require 'twitter'
require 'yaml'

key  = YAML.load_file( "config.yaml" )
client = Twitter::REST::Client.new do |config|
  config.consumer_key       = key["con_key"]
  config.consumer_secret    = key["con_sec"]
  config.access_token        = key["acc_key"]
  config.access_token_secret = key["acc_sec"]
end
client.update("test tweet!!")
puts "Finish!"

実行!!!

[root@myhost ~]# ruby testtweet.rb
Finish!
[root@myhost ~]#

良かった、無事成功。。。。。ツイートを確認しても問題なくツイートできていることを確認。

バージョンアップはやっぱりこわいですな(´・ω・`)