It didn't make it the stable branch. If we can get a few real success
stories on the use of erubis in Rails, I'll gladly move it to the
stable branch for a 1.2.3 release (assuming there will be one, there
are no definite plans).
I was working with Ezra on erubis support when I committed that.
AFAIK, the erubis rails adapter still needs a few changes to allow it
to work with yield, and it should be ready as a drop-in replacement.
Er, I see Jeremy committed that. I think we were just working on this
at the same time though
Thanks. Apart from yield and the _erbout issue, Erubis has worked just fine, no other issues as far as I can tell (I haven’t tested the CachedRailsTemplate handler yet though). Anything you’d like me to look into? I’d like this to make the next release if possible.
I don’t know what the plans for @content_for_layout are, is it going to be removed at some point? If so then this patch is void. My Ruby isn’t great and my knowledge of Rails internals even less so; this patch may indeed suck. This fixes the problem with using yield with some funky nested block magic. I realise this isn’t the Erubis list, though I’d like to get some input on the future of @content_for_layout before standing this upstream.
according to http://www.kuwata-lab.com/erubis/CHANGES, erubis 2.2
should work now. Is it only missing erb_variable or is there more
that needs to be done to rails?
It bites me in the ass every time. But, fortunately, it’s easy enough to fix. It doesn’t look like it’s been resolved into 2.2.0 though. I might be wrong.
I can’t get 2.2.0 to work. It looks like it requires a patched action_view/base.rb. It not longer uses the register_template_handler method and instead tries to override the default call to ERB.new, take a look here:
http://www.kuwata-lab.com/erubis/users-guide.05.html#topics-rails
rails_helper.rb then as this at the bottom:
set Erubis as eRuby compiler in Ruby on Rails instead of ERB
There may be a good reason for avoiding register_template_handler like this, though on the face of it it doesn’t look very nice. Also notice the src.insert(0, '_erbout = ') line, perhaps it’ll work without the erb_variable change. I’m not willing to patch my ActionView base.rb, so I don’t know if yield works now (there is no mention of it in the ChangeLog).
Russell, that patch seems to be invalidated by 2.2.0, the code in rails_helper.rb has changed a lot and _localvar_code() no longer exists.
I can't get 2.2.0 to work. It looks like it requires a patched
action_view/base.rb.
It is not necessary to apply the patch. It is optional,
because this patch is included in 'erubis/helpers/rails_helper.rb'.
I'm not willing to patch my ActionView base.rb, so I
don't know if yield works now (there is no mention of it in the ChangeLog).
'yield' will work very well with Erubis 2.2.0.
And the following methods which assume that variable name is '_erbout'
also works.
* ActionView::Helpers::CaptureHelper#capture()
* ActionView::Helpers::CaptureHelper#content_for()
* ActionView::Helpers::TextHelper#concat()
If you have any troubles about Erubis 2.2.0 with Ruby on Rails, please
tell me.
Thank you for trying Erubis.
With just:
require ‘erubis/helpers/rails_helper’
Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
in my environment.rb it fails because it expects .rhtml extensions on the views. Don’t we need to use register_template_handler at some point to inform rails to look for the .erubis extension too? I don’t see anything in rails_helper.rb that does similar. Could you also explain the reason for avoiding register_template_handler?
With just:
require 'erubis/helpers/rails_helper'
Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
in my environment.rb it fails because it expects .rhtml extensions on the
views.
what errors do you have? I need details of error messages, with Rails
version.
Don't we need to use register_template_handler at some point to
inform rails to look for the .erubis extension too? I don't see anything in
rails_helper.rb that does similar. Could you also explain the reason for
avoiding register_template_handler?
reasons:
* Using register_template_handler() is no merits for Erubis in
paticular
around performance.
ActionView is optimized for ERB and it creates temporary method for
view
from '*.rhtml' file. It works fast because it removes the cost to
convert
'*.rhtml' file into ruby code and parse it.
But register_template_handler() reads '*.rhtml' file every time and
it is
necessary to convert eRuby into ruby code and pase it every time.
These costs are not small and spoil the merit of Erubis's speed.
You may use Erubis with register_template_handler(), but you will
not able
to get the advantage of Erubis's performance.
(In fact, ActionView is designed tightly with ERB, I think. There is
no way
to get template file name in register_template_handler(). It is
unconvenient
for other template engines except ERB.)
* Erubis can convert eRuby file into ruby code correctly. It means
that
Erubis can replace ERB in Ruby on Rails. I think that there is no
problems
when replacing ERB with Erubis. If not, please report it to me.