ruby-openid: @socket не установлен при выполнении обнаружения - PullRequest
5 голосов
/ 19 марта 2011

У меня немного проблем с omniauth / 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 trunk 29020) [x86_64-darwin10.4.0]
  • ruby-openid (2.1.8)
  • ruby-openid-apps-discovery (1.2.0)
  • omniauth 0.2.0

Ответы [ 2 ]

7 голосов
/ 05 апреля 2011

У нас была такая же проблема, и это было прямым результатом того, что Net :: HTTP # connect никогда не вызывался.Оказывается, что у нас есть fakeweb, ограниченный областью действия, которая выдает ошибку (в нашем случае, разработкой).

Сужение области действия fakeweb позволяет нормально обрабатывать #connect, и @socket снова счастлив.

group :test do
  gem 'fakeweb'
end
1 голос
/ 10 января 2013

Мы столкнулись с одной и той же / очень похожей проблемой с fakeweb и webmock (при использовании драгоценного камня VCR ).Переход с fakeweb на typhoeus, похоже, решил эту проблему для нас.

...