This project is archived and is in readonly mode.
ERB monkypatch creates incompatibilities
Reported by nex3 | May 23rd, 2010 @ 11:59 AM | in 2.3.7
In 2.3.6, ERB is monkeypatched rather than subclassed to use
ActiveSupport::SafeBuffer
. This breaks any libraries
that are using ERB and expecting it to work with a plain string.
One such use is Haml's :erb
filter, which integrates
the ERB-compiled Ruby into the Haml-compiled Ruby, and breaks when
ERB tries to call #safe_concat
on a plain string.
Why is ERB being monkeypatched in the first place? I was under the impression that Erubis was used for XSS-safety. This monkeypatch doesn't exist in the master branch. I suggest removing it entirely. If removal isn't an option, subclass before you change the behavior of a class.
Comments and changes to this ticket
-
Jeremy Kemper May 23rd, 2010 @ 05:58 PM
- Milestone set to 2.3.7
- State changed from new to open
- Assigned user set to Santiago Pastorino
For forward compatibility with Rails 3. Everything supports the html-safety machinery out of the box, but it's turned off by default. You install the rails_xss plugin to enable.
Reopening ERB directly is unnecessary.
-
Santiago Pastorino May 23rd, 2010 @ 06:08 PM
- Milestone changed from 2.3.7 to 2.3.6
- Assigned user cleared.
-
Santiago Pastorino May 23rd, 2010 @ 06:10 PM
- Milestone changed from 2.3.6 to 2.3.7
ohh sorry i did this before reloading
-
nex3 May 23rd, 2010 @ 09:30 PM
- Tag changed from 2.3.6, xss to 2, xss
How does monkeypatching ERB create forwards compatibility? Rails 3 doesn't monkeypatch ERB. ERB isn't used for html-safety... that's all Erubis. What reason could there possibly be for modifying ERB?
-
Andrea Campi October 16th, 2010 @ 11:41 PM
- Tag changed from 2, xss to 2-3-stable, xss
- Importance changed from to High
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>