2011-03-19 13 views
5

मुझे omniauth/openid के साथ थोड़ा सा ट्रबल है।रूबी-ओपनिड: खोज करने के दौरान @socket सेट नहीं है

जब प्रमाणित करने का प्रयास है, मैं अपने लॉग में यह पाया:

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 परिभाषित नहीं है।

क्या आप में से कोई भी इससे पहले सामना कर चुका है? बिल्कुल यकीन नहीं है कि कारण क्या है।

संस्करण मैं चल रहा हूँ:

  • माणिक 1.9.3dev (2010-08-17 ट्रंक 29020) [x86_64-darwin10.4.0]
  • माणिक openid (2.1.8)
  • माणिक openid-क्षुधा की खोज (1.2.0)
  • 0.2.0

उत्तर

7

omniauth हम इस एक ही समस्या थी और यह Net :: HTTP # का एक सीधा परिणाम कनेक्ट लागू किया जा रहा कभी नहीं था। बाहर निकलता है कि हमारे पास फैकवेब मणि पर्यावरण में डूब गया था जो त्रुटि को फेंक रहा था (विकास, हमारे मामले में)।

फ़ेकवेब के दायरे को संक्षिप्त करना # कनेक्ट की सामान्य प्रसंस्करण के लिए अनुमति देता है और @socket एक बार फिर से खुश है।

group :test do 
    gem 'fakeweb' 
end 
1

हम fakeweb और webmock दोनों (जब VCR मणि का प्रयोग करके) के साथ एक ही/बहुत समान समस्या बारे में जाना। fakeweb से typhoeus पर स्विच करने से हमारे लिए यह समस्या हल हो गई थी।