2015-06-18 8 views
6

हमने रेल 4 में अपग्रेड किया, कुछ प्रमुख मुद्दे थे और फिर से डाउनग्रेड किया गया (अपग्रेड प्रतिबद्धता को वापस कर दिया गया)।रेलवे से रेल 3 के डाउनग्रेड करने के बाद # <हैश ... "के लिए" NoMethodError: अपरिभाषित विधि 'स्वीप' जैसे त्रुटियां

हम तो

NoMethodError (undefined method `sweep' for #<Hash:0x007f01ab44a940>): 

तरह त्रुटियों मिला रेल क्योंकि उचित रूप में 4 दुकानों के लिए एक रास्ता रेल कि 3 नहीं पढ़ सकते में सत्र में एक फ्लैश।

इसे हल करने का एक अच्छा तरीका क्या है?

उत्तर

8

हमने इस त्रुटि को पकड़ने और बोर्कड फ्लैश को हटाने के लिए स्वयं को पैच करके इसे हल करके समाप्त कर दिया। इसका मतलब यह है कि यह काफी पारदर्शी रूप से आत्म-उपचार करता है।

हम भी केवल ऑन रेल्स 3 इस पैच लागू करने के लिए सुनिश्चित किया, इसलिए जब हम उन्नयन पर एक और प्रयास रेल के लिए 4.

हम config/initializers/rails4_to_rails3_downgradability.rb में यह अटक कर यह मुद्दों का कारण नहीं है:

if Rails::VERSION::MAJOR == 3 

    module ActionDispatch 
    class Flash 
     def call(env) 
     if (session = env['rack.session']) && (flash = session['flash']) 

      # Beginning of change! 

      if flash.respond_to?(:sweep) 
      flash.sweep 
      else 
      session.delete("flash") 
      end 

      # End of change! 

     end 

     @app.call(env) 
     ensure 
     session = env['rack.session'] || {} 
     flash_hash = env[KEY] 

     if flash_hash 
      if !flash_hash.empty? || session.key?('flash') 
      session["flash"] = flash_hash 
      new_hash = flash_hash.dup 
      else 
      new_hash = flash_hash 
      end 

      env[KEY] = new_hash 
     end 

     if session.key?('flash') && session['flash'].empty? 
      session.delete('flash') 
     end 
     end 
    end 
    end 

end 
3

उपयोगकर्ताओं को कुकीज़ को साफ़ करने के लिए कहकर हल किया गया एक ही समस्या का सामना करना पड़ा। सभी के लिए समाधान नहीं हो सकता है, बस यह इंगित करना कि यह एक विकल्प है।

+0

निश्चित रूप से एक अच्छा बिंदु। योगदान के लिए धन्यवाद! –

संबंधित मुद्दे