5

omn​​iauth/openid でちょっとしたトラブルが発生しています。

認証しようとすると、ログにこれが見つかりました:

OpenID::FetchingError: Error fetching https://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username: undefined method `io' for nil:NilClass

undefined method io' for nil:NilClass次のスニペットでは、openid/fetchers.rb に由来する重要な点があります。

module Net
class HTTP
def post_connection_check(hostname)
  check_common_name = true
  cert = @socket.io.peer_cert
  cert.extensions.each { |ext|
    next if ext.oid != "subjectAltName"
    ext.value.split(/,\s+/).each{ |general_name|
      if /\ADNS:(.*)/ =~ general_name
        check_common_name = false
...

そのエラーは によって生成され@socket.io.peer_cert、@socket は定義されていません。

以前にこれに遭遇した人はいますか?何が原因なのかよくわかりません。

私が実行しているバージョン:

  • ruby 1.9.3dev (2010-08-17 トランク 29020) [x86_64-darwin10.4.0]
  • ruby-openid (2.1.8)
  • ruby-openid-apps-discovery (1.2.0)
  • オムニ認証 0.2.0
4

2 に答える 2

7

これと同じ問題があり、Net::HTTP#connect が呼び出されなかったことが直接の原因でした。エラーをスローしていた環境 (私たちの場合は開発環境) を対象に、fakeweb gem のスコープを設定していたことがわかりました。

fakeweb の範囲を狭めることで #connect の通常の処理が可能になり、@socket は再び満足しています。

group :test do
  gem 'fakeweb'
end
于 2011-04-05T14:06:23.990 に答える
1

We came across the same / very similar problem with both fakeweb and webmock (when using the VCR gem). Switching from fakeweb to typhoeus seemed to have solved this problem for us.

于 2013-01-10T16:45:41.233 に答える