NoMethodError (undefined method `<=>' for :oauth_token:Symbol):
oauth (0.4.7) lib/oauth/helper.rb:37:in `<=>'
oauth (0.4.7) lib/oauth/helper.rb:37:in `sort'
oauth (0.4.7) lib/oauth/helper.rb:37:in `normalize'
oauth (0.4.7) lib/oauth/consumer.rb:359:in `create_http_request'
oauth (0.4.7) lib/oauth/consumer.rb:187:in `create_signed_request'
oauth (0.4.7) lib/oauth/consumer.rb:159:in `request'
oauth (0.4.7) lib/oauth/consumer.rb:194:in `token_request'
oauth (0.4.7) lib/oauth/tokens/request_token.rb:18:in `get_access_token'
- RequestToken.get_access_token に渡す引数をURLとして組み立てるときに正規化(normalize)するメソッドが追加され,その中で sort を行なっている
- 引数が Hash だと Key がシンボルの場合ソート出来ない => エラーになった
$ git diff v0.4.5 v0.4.7 lib/oauth/consumer.rb
@@ -351,9 +356,8 @@ module OAuth
end
if data.is_a?(Hash)
- form_data = {}
- data.each {|k,v| form_data[k.to_s] = v if !v.nil?}
- request.set_form_data(form_data)
+ request.body = OAuth::Helper.normalize(data)
+ request.content_type = 'application/x-www-form-urlencoded'
elsif data
if data.respond_to?(:read)
request.body_stream = data
- RequestToken.get_access_token の引数に,Hash を使う場合は,Key に文字列を使うように変更
access_token = request_token.get_access_token( {},
- :oauth_token => params[:oauth_token],
- :oauth_verifier => params[:oauth_verifier] )
+ 'oauth_token' => params['oauth_token'],
+ 'oauth_verifier' => params['oauth_verifier'] )
その他
可変長の引数を受け取るメソッドの定義
- これまではデフォルト引数(default arguments)に配列とかを渡していた
- そういえばオプショナル引数(optional arguments)なんかあったな
def hoge( a, b = [] )
end
def fuga( a, *b )
end