"can't modify frozen string" error in Ajax.Updater


#1

I’ve just deployed my RoR app to a host that uses dispatch.cgi instead
of Mongrel and came across this issue when using AJAX. The same issue
has been highlighted a year ago, (on this list) <http://
groups.google.com/group/rubyonrails-talk/browse_thread/thread/
872fed1ff554c9a4> and (on Rails Trac) <http://dev.rubyonrails.org/
ticket/10365>.

In short, when some browsers enact the default remote_form_for,
remote_function or observe_field procedures (which produce
Ajax.Updater calls), the call fails and in the log appears:

Status: 500 Internal Server Error
can’t modify frozen string
/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/
request.rb:598:in `gsub!’

The issue appears to be worked around by adding “:method => :get” to
each remote_function/observe_field call, but this is far from ideal,
and is definitely still going to cause headaches. The calls use the
POST method by default, it seems.

Are there any developments on this bug?


#2

I had the same problem deploying an application to hostgator, and I
remember the bug would only show up using safari… I did not find any
solution other than moving the app to DreamHost…

iPhonized!