Abbiamo risolto questo problema rattoppando Rails stesso per rilevare questo errore ed eliminare il flash borked. Ciò significa che si auto-guarisce in modo abbastanza trasparente.
Abbiamo anche fatto in modo di applicare solo questa patch on Rails 3, in modo da non causare problemi quando facciamo un altro tentativo di aggiornamento a Rails 4.
Abbiamo bloccato questo 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
fonte
2015-06-18 13:14:39
Definitivamente un buon punto. Grazie per aver contribuito! –