1

私はdeviseでアプリをビルドRails3.2し、herokuにデプロイしています。次の問題に対して解決する解決策はありますか? サインイン操作後、以下のエラーが発生し、応答しhttp status 500ます。

2012-10-14T05:29:08+00:00 app[web.1]: : SELECT  "users".* FROM "users"  WHERE   
 (lower(username) = '***' OR lower(email) = '***') LIMIT 1):
2012-10-14T05:29:08+00:00 app[web.1]:   app/models/user.rb:23:in    
 find_for_database_authentication'
2012-10-14T05:29:08+00:00 app[web.1]:
2012-10-14T05:29:08+00:00 app[web.1]: ActiveRecord::StatementInvalid (PGError: SSL
 error: cert already in hash table
2012-10-14T05:29:08+00:00 app[web.1]:    
 app/controllers/users/sessions_controller.rb:9:in `create'
2012-10-14T05:29:08+00:00 app[web.1]:
2012-10-14T05:29:08+00:00 heroku[router]: POST agile-cliffs-   
 6123.herokuapp.com/users/sign_in dyno=web.1 queue=0 wait=0ms service=45ms status=500 
 bytes=643

実際、デバイスの登録機能は正常に動作しますが、サインインは機能しません。この問題は、本番環境でのみ発生します。

4

1 に答える 1

1

以前からの私の非回答の編集: ついに問題の核心を見つけました!

アプリを GApps Marketplace に統合しているため、 ruby​​-openid-apps-discovery gem を使用しています。gem をそのままの形で使用していますが、OmniAuth を使用していて google_apps 戦略を有効にしている場合は、それも使用しています。

http://code.google.com/p/ruby-openid-apps-discovery/source/browse/trunk/lib/gapps_openid.rbの 255 行目になります。

追加の CA 証明書 (add_file) のロードにより OpenSSL が汚染され、現在の Postgres SSL 接続が破損している

@@store = OpenSSL::X509::Store.new
@@store.set_default_paths
@@store.add_file(ca_bundle_path)        

唯一のオプションは、Postgres に再接続するか、store() メソッドにモンキー パッチを適用して、add_file の呼び出しを削除することです。Heroku dyno にはすでにストック CA 証明書があり、GApps OpenID ディスカバリーを行うにはそれで十分なようです。

参考までに、OmniAuth と google_apps 戦略を有効にした空の Rails アプリで、この問題をクリーン ルームで再現しようとしましたが、再現できませんでした。問題に貢献するために OpenSSL ゲームをプレイしているアプリのコンポーネント.. この gem に対してバグを報告したいのですが、プロジェクトはほとんど死んでいるように見えます。問題をきれいに再現できないため、100% とは言えません。それが間違いであるという確信。

于 2012-11-29T13:14:02.453 に答える