2017-09-19 8 views
0

私はKoala gem(v2.2)とFaraday(0.9.2)を使用するレールアプリケーションを開発中です。なぜなら、Facebookのリクエストの多くは実行が必要で、間違っている理由で間違っているようです。ここにスタックトレースがあります。私はここでRails - Koala/Faraday Gems実行期限切れのエラー

は、コードスニペットで、それはoauth.get_app_access_tokenに失敗した場合や、ここで

oauth = Koala::Facebook::OAuth.new(Rails.application.config.facebook_app_id, 
            Rails.application.config.facebook_app_secret, 
            nil) 

app_access_token = oauth.get_app_access_token # fails here 
app_graph = Koala::Facebook::API.new(app_access_token) 
token_info = app_graph.debug_token(atoken) # or fails here 

をapp_graph.debug_tokenのいずれか、この問題を解決する方法の助けに感謝されるエラーです:

ERROR: execution expired 
/usr/lib/ruby/1.9.2/net/http.rb:644:in `initialize' 
/usr/lib/ruby/1.9.2/net/http.rb:644:in `open' 
/usr/lib/ruby/1.9.2/net/http.rb:644:in `block in connect' 
/usr/lib/ruby/1.9.2/net/http.rb:644:in `connect' 
/usr/lib/ruby/1.9.2/net/http.rb:637:in `do_start' 
/usr/lib/ruby/1.9.2/net/http.rb:626:in `start' 
/usr/lib/ruby/1.9.2/net/http.rb:1168:in `request' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:82:in `perform_request' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:40:in `block in call' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:87:in `with_net_http_connection' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:32:in `call' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/request/url_encoded.rb:15:in `call' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/request/multipart.rb:14:in `call' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/rack_builder.rb:139:in `build_response' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/connection.rb:377:in `run_request' 
/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/connection.rb:177:in `post' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala/http_service.rb:113:in `make_request' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala.rb:64:in `make_request' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala/oauth.rb:306:in `fetch_token_string' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala/oauth.rb:258:in `get_token_from_server' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala/oauth.rb:189:in `get_app_access_token_info' 
/usr/lib/ruby/gems/1.9.2/gems/koala-2.2.0/lib/koala/oauth.rb:199:in `get_app_access_token' 
+0

あなたのネットhttpコールがタイムアウトしています...あなたがアクセスしているサイトが応答するのに5秒以上かかります。何をhttpにしようとしていますか? – SteveTurczyn

+0

oauthでfacebookからアクセストークンを取得しようとしています:oauth =コアラ:: Facebook :: OAuth.new(Rails.application.config.facebook_app_id、 Rails.application.config.facebook_app_secret、 nil) – Heisenberg

+0

私は編集しましたコードスニペットを含めるコード、タイムアウトはアクセストークンを取得するか、デバッグトークンを取得するか、9月13日午後4時にPDTを開始したようだが、facebookで問題を記録するが、宝石にも問題があるのだろうか? – Heisenberg

答えて

1

これは、実行の期限が切れている/lib/faraday/adapter/net_http.rb:82:in 'perform_request' methodある

def perform_request(http, env) 
    if :get == env[:method] and !env[:body] 
     # prefer `get` to `request` because the former handles gzip (ruby 1.9) 
     http.get env[:url].request_uri, env[:request_headers] 
    else 
     # In your case you execture http.request 
     http.request create_request(env) 
    end 
    end 

これは私がこの方法でresであると私は信じているので、また、私は、requestが行われている方法に焦点を当てますNet::HTTPResponse ruby class

に基づいて行われます

Returns an HTTPResponse object.

を強調し、Net::HTTP.request方法Rubyのドキュメントですいくつかのパラメータが正しく渡されていないため、応答が長くかかる理由です。したがって、リクエスト本文、ヘッダーおよびその他のすべての情報に焦点を当てる必要があります。

# File net/http.rb, line 1421 
def request(req, body = nil, &block) # :yield: +response+ 
    unless started? 
    start { 
     req['connection'] ||= 'close' 
     return request(req, body, &block) 
    } 
    end 
    if proxy_user() 
    req.proxy_basic_auth proxy_user(), proxy_pass() unless use_ssl? 
    end 
    req.set_body_internal body 
    res = transport_request(req, &block) 
    if sspi_auth?(res) 
    sspi_auth(req) 
    res = transport_request(req, &block) 
    end 
    res 
end 

それでは、本番サーバログにいくつかの追加のログ情報を印刷について、あなたはその本番ログに出力をすべきいくつかの変数にいくつかのputs文を書くために、これは/usr/lib/ruby/1.9.2/net/http.rb:1168:in 'request'/usr/lib/ruby/gems/1.9.2/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:82:in 'perform_request'をファイル開くことができます。

また、レールアプリログがそれらを印刷するように設定されていることを確認する必要があります。

関連する問題