Embedded Ruby in Views in Ruby 1.8.7

Good morning!

I am trying to find full documentation about the way to embed ruby
commands in the rails views.

I am working on a large existing app. We just installed Ruby 1.8.7 on
one of our servers in an attempt to get cruisecontrol.rb working with
metrics_fu.

It seems that this version of ruby does not like comments in the
embedded ruby in the rails views.

So I am looking through the app, and there are various things in our
views, such as:

<%= <expression> # comment about <expression> %>
<%# comment about stuff around this line %>
<%= # commented out code %>
<% end # comment about what it is ending %>

And the new ruby does not seem to like any of these. It seems as
though the %> gets commented out as well.

There is also one other thing I could not find documentation for:

<%- <some ruby code> -%>

Notice the dashes! Do they do anything? Or is it just that you can
put dashes and it won't really affect anything (besides perhaps the
return value.

Thanks!

Good morning!

I am trying to find full documentation about the way to embed ruby
commands in the rails views.

I am working on a large existing app. We just installed Ruby 1.8.7 on
one of our servers in an attempt to get cruisecontrol.rb working with
metrics_fu.

It seems that this version of ruby does not like comments in the
embedded ruby in the rails views.

So I am looking through the app, and there are various things in our
views, such as:

<%= <expression> # comment about <expression> %>
<%# comment about stuff around this line %>
<%= # commented out code %>
<% end # comment about what it is ending %>

erb in ruby 1.8.7 slightly changed behaviour of what had been
previously undefined behaviour (ie it just happened to work before but
never documented as such), namely

<%# is ok
but <% bla bla #
and variants thereof aren't

And the new ruby does not seem to like any of these. It seems as
though the %> gets commented out as well.

There is also one other thing I could not find documentation for:

<%- <some ruby code> -%>

Notice the dashes! Do they do anything? Or is it just that you can
put dashes and it won't really affect anything (besides perhaps the
return value.

it suppresses (usually) spurious blank lines.

Fred

Good morning!

I am trying to find full documentation about the way to embed ruby
commands in the rails views.

I am working on a large existing app. We just installed Ruby 1.8.7 on
one of our servers in an attempt to get cruisecontrol.rb working with
metrics_fu.

It seems that this version of ruby does not like comments in the
embedded ruby in the rails views.

Correct. Comments in ERB tags only worked by accident -- not a feature.

So I am looking through the app, and there are various things in our
views, such as:

<%= <expression> # comment about <expression> %>
<%# comment about stuff around this line %>
<%= # commented out code %>
<% end # comment about what it is ending %>

And the new ruby does not seem to like any of these. It seems as
though the %> gets commented out as well.

<%# is the comment tag; it works fine. The others will not.

There is also one other thing I could not find documentation for:

<%- <some ruby code> -%>

Notice the dashes! Do they do anything? Or is it just that you can
put dashes and it won't really affect anything (besides perhaps the
return value.

<%- strips leading whitespace

-%> strips trailing whitespace, including newline

These are useful for precise formatting in plain text emails, for example.

Best,
jeremy

Thanks!

I guess I have some work to do...

This will work:

<%= ruby_code # commented_out_code
%>

You will have to put closing tag ( “%>”) in next line. Although this is a hack (and not by design).

You may be able to come with a regexp that you can use for a global
search/replace.
You possibly want to replace all <%somecode#somecomment%> with
<%somecode%><%#somecomment%> though there will no doubt be some
special cases.

Colin

This will work:

<%= ruby_code # commented_out_code
%>

You will have to put closing tag ( "%>") in next line. Although this is a
hack (and not by design).

I don't think you could rely on that working in all future releases.

Colin