Ruby Twitter Gem(とRuby OAuth Gem)のバージョンが変わったら動かなくなった件

前回までの話
Ruby Twitter GemでOAuth認証のクライアントを作る

サーバの移行でバージョンが変わりました。
すると、こーんなエラーが出て動かなくなりました。

/usr/local/lib/ruby/gems/1.8/gems/oauth-0.4.3/lib/oauth/client/helper.rb:64:in `amend_user_agent_header’: uninitialized constant OAuth::VERSION (NameError)

いろいろ調べた結果、こうするのが正解だったようです。

「クライアントプログラム側でOAuth::VERSIONを定義する」
定義してないプログラム用に、〜/oauth/version.rb を作成しました

OAuth::VERSION = "0.4.3"

これをやったあと、クライアントプログラムでOAuthまわりの部分に1行追加

gem 'oauth'
require 'oauth/consumer'
require 'oauth/version'         # ← これを追加!

Ruby twitter gemを使ってる場合は、この追加は不要です。このまま。

gem 'twitter'
require 'twitter'

以下は、「まいんぼたん」的変更。
twitter gem の0.9.12でupdate時にJSON処理まわりで例外を吐いてしまうようなので、rescueで強引に対策。

tw_oauth = Twitter::OAuth.new( OAUTH_CONSUMER_KEY , OAUTH_CONSUMER_SECRET )
tw_oauth.authorize_from_access( oa_token  , oa_secret )

client = Twitter::Base.new(tw_oauth)
begin
   res = client.update( in_post )
rescue
   reserr = 1
end

参考:Togetter – 「RubyでOAuthをごにょごにょ」

Comments are closed.