Chúng tôi đã kết thúc việc giải quyết vấn đề này bằng cách tự vá Rails để bắt lỗi này và xóa đèn flash bị bẻ khóa. Điều này có nghĩa là nó tự hồi phục khá rõ ràng.
Chúng tôi cũng thực hiện đảm bảo chỉ áp dụng bản vá này on Rails 3, vì vậy nó không gây ra vấn đề khi chúng ta thực hiện một nỗ lực nâng cấp lên Rails 4.
Chúng tôi bị mắc kẹt này trong 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
Nguồn
2015-06-18 13:14:39
Chắc chắn là một điểm tốt. Cảm ơn bạn đã đóng góp! –