Blank lines generated by ERB - Can we prevent them?

Hi,

I’m running:
Ruby 1.8.6
eRuby 1.0.5
WinXP-Pro/SP3

I’ve got a three-line script:
<%#- Example from -%>
<%#-
http://www.linuxtopia.org/online_books/programming_books/ruby_tutorial/Ruby_and_the_Web_Using_eruby.html
-%>
This text is <% a = 100; print “#{a}% Live!” %>
=== end of script ===

that produces 5 lines of output in a Command Window (2 blank lines, a
line of text and 2 more blank lines):
K:_Projects\Ruby_Ruby_Tests\TestEruby>eruby Test_eruby_01.erb

This text is 100% Live!

K:_Projects\Ruby_Ruby_Tests\TestEruby>
=== end of relevant portion of Cmd Window ===

I haven’t been able to get rid of those blank lines. Is there a way?

Thanks in advance,
Richard

RichardOnRails wrote in post #985685:

I haven’t been able to get rid of those blank lines. Is there a way?

It looks like erb comments don’t support the -%> way of preventing the
blank lines. I tried both erb and eruby command-line tools.

Regular ruby comments seem OK though:

<% # Example from -%>
<% # http://www.linuxtopia.org/online_books/programming… -%>
This text is <% a = 100; print “#{a}% Live!” %>

BTW it’s bad practice to embed print inside erb (and you’ll see the
‘erb’ command line tool gives unexpected results, maybe other erb
implementations will too). This is because you may find erb being
assembled into a buffer and then printed at the end.

Much better to use <%= … %> to embed output. For example:

This text is <% a = 100 %><%= “#{a}% Live!” %>

or:

This text is <%= a = 100; “#{a}% Live!” %>

On Mar 6, 4:36pm, Brian C. [email protected] wrote:

<% #http://www.linuxtopia.org/online_books/programming… -%>

or:

This text is <%= a = 100; “#{a}% Live!” %>


Posted viahttp://www.ruby-forum.com/.

Hi Brian,

I tried both erb and eruby command-line tools
I didn’t know there was an erb command-line executable. Thanks for
that tidbit.

BTW it’s bad practice to embed print inside erb
Yeah, I thought that was a somewhat weird approach, but I wanted to
get some of the published examples working before I began sticking in
my 2-cents worth, aside from comments to compensate for my poor
memory :slight_smile:

I had completely run out of ideas. Thanks for experimenting with the
“<% #” idea. I wound up with the following code (published at
http://www.pastie.org/1641092), which works perfectly IMHO:

=== Start 9 lines (no newline at end of 9th line) ====
<% # Test_eruby_01.erb %>
<% # K:_Projects\Ruby_Ruby_Tests\TestEruby %>
<% # Example from %>
<% #
http://www.linuxtopia.org/online_books/programming_books/ruby_tutorial/Ruby_and_the_Web_Using_eruby.html
%>
<% # Usage: %>
<% # eruby Test_eruby_01.erb %>
<% # Published: %>
<% # http://www.pastie.org/1641092 %>
This text is <% a = 100; print “#{a}% Live!” %>
=== End 9 lines (4th line is split in this posting) ===

Output in Command Window (one line):
=== Start ===
K:_Projects\Ruby_Ruby_Tests\TestEruby>eruby Test_eruby_01.erb
This text is 100% Live!
K:_Projects\Ruby_Ruby_Tests\TestEruby>

Best wishes,
Richard

On Sun, Mar 6, 2011 at 1:55 AM, RichardOnRails
[email protected] wrote:

-%>

K:_Projects\Ruby_Ruby_Tests\TestEruby>
=== end of relevant portion of Cmd Window ===

I haven’t been able to get rid of those blank lines. Is there a way?

Use less tags and let them span multiple lines. Remember that erb will
copy everything literally that is not between <%%> so line endings are
simply copied over. You can do

13:28:16 Temp$ erb19 x.erb
This text is 100% Live!"
13:29:44 Temp$ cat -n x.erb
1 <%#-
2 Example from
3
http://www.linuxtopia.org/online_books/programming_books/ruby_tutorial/Ruby_and_the_Web_Using_eruby.html
4 -%>This text is <% a = 100 %><%= a %>% Live!"
13:29:45 Temp$

And, btw, note to not use print, puts and the line in erb templates.
If you want to include output in the file you need to use <%= %>
because print may send output to a completely different place plus
even if you catch the same (i.e. stdout) order may be wrong.

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs