Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Stringify the incoming hash in FlashHash

Stringify the incoming as well to handle incoming symbol keys from
marshalled sessions
  • Loading branch information...
commit a668beffd64106a1e1fedb71cc25eaaa11baf0c1 1 parent a6ce984
@guilleiguaran guilleiguaran authored chancancode committed
Showing with 3 additions and 1 deletion.
  1. +3 −1 actionpack/lib/action_dispatch/middleware/flash.rb
View
4 actionpack/lib/action_dispatch/middleware/flash.rb
@@ -1,3 +1,5 @@
+require 'active_support/core_ext/hash/keys'
+
module ActionDispatch
class Request < Rack::Request
# Access the contents of the flash. Use <tt>flash["notice"]</tt> to
@@ -94,7 +96,7 @@ def to_session_value
def initialize(flashes = {}, discard = []) #:nodoc:
@discard = Set.new(stringify_array(discard))
- @flashes = flashes
+ @flashes = flashes.stringify_keys
@now = nil
end

11 comments on commit a668bef

@senny
Owner

Just upgraded my app to the RC and noticed that Symbol keys changed to String keys. Is this expected behavior? It should be documented in the upgrading guide at least. This will break apps for sure.

@kuldeepaggarwal

@senny This won't break any app, as if we try to access notice like flash[:notice], then

def [](k)
  @flash[k.to_s]
end

will save you... :smile:

@guilleiguaran

@kuldeepaggarwal it breaks apps that were iterating over the keys and checking for specific keys, for example:

<% flash.keys.each do |key, value| %>
    <span class="<%= (key == :notice) ? 'green' : 'red' %>"><%= value %></span>
<% end %>  
@senny
Owner

@kuldeepaggarwal flash access works but the keys need to be stored in some sort. Before they were symbols and now they are Strings. If you have applications that work with the internal flash representation (like the example of @guilleiguaran) you get different behavior than on Rails 4. I know there are many tutorials and even gems out there that suggest looping through the flash. So this is a compatibility issue.

It's easy to fix though so we need to make sure the user knows what the cause is an how to proceed.

@kuldeepaggarwal

Sorry I missed that...

@kuldeepaggarwal

@senny So should we update the guide?

@chancancode
Owner
@chancancode
Owner
@senny
Owner

i updated the upgrading guide. will take care of changelog/ release guide sync next week.

@chancancode
Owner
Please sign in to comment.
Something went wrong with that request. Please try again.