IAre there some subtle bugs in ERB parsing?

F

Frank Church

Is there any code in this ERB snippet that causes text after the EOF
to be included in the template.

Unless my understanding of ERB is inadequate there has to be some bug in it.
It has me at my wit's end.

=============

template = ERB.new <<-EOF

# rsync push mode

#rsync_push_command check

# <%= rsync_push_command %>

# rsync_forced_command
# <%= rsync_forced_command %>
#

EOF

some program code here

=====
After execution the text "some program code here" appears in the
template's output

Are there some circumstances under which ERB goes haywire?

Is there an alternate syntax to the ERB.NEW <<-EOF ... EOF syntax for
when the text is on multiple lines.

- Frank
 
S

Sharon Phillips

Is there any code in this ERB snippet that causes text after the EOF
to be included in the template.

Unless my understanding of ERB is inadequate there has to be some
bug in it.
It has me at my wit's end.

=============

template = ERB.new <<-EOF

# rsync push mode

#rsync_push_command check

# <%= rsync_push_command %>

# rsync_forced_command
# <%= rsync_forced_command %>
#

EOF

some program code here

=====
After execution the text "some program code here" appears in the
template's output

Are there some circumstances under which ERB goes haywire?

Is there an alternate syntax to the ERB.NEW <<-EOF ... EOF syntax for
when the text is on multiple lines.

- Frank

Hi Frank,

I'm not that familiar with erb, but from what you've described I'm
pretty sure the error's with the text block not ending where you want
it to.
Are you using an editor with syntax highlighting? If so, this will
show where the text block stops. The last EOF must have no whitespace
before it, and a carriage return immediately after. It's easy to get
caught out with a stray space on the end of the line.

Cheers,
Dave
 
B

Bil Kleb

Sharon said:
Is there an alternate syntax to the ERB.NEW <<-EOF ... EOF syntax for
when the text is on multiple lines.

The last EOF must have no whitespace before it [..]

It can have white space before the token if you use the opening
'-' option as Frank has, but I think you've identified the culprit
here: white space /after/ the closing token.

Regards,
 
S

Sharon Phillips

Sharon said:
Is there an alternate syntax to the ERB.NEW <<-EOF ... EOF syntax
for
when the text is on multiple lines.

The last EOF must have no whitespace before it [..]

It can have white space before the token if you use the opening
'-' option as Frank has, but I think you've identified the culprit
here: white space /after/ the closing token.

I've always used <<EOF and had no idea that <<- existed. Thanks.

Cheers,
Dave
 
F

Frank Church

Is there any code in this ERB snippet that causes text after the EOF
to be included in the template.

Unless my understanding of ERB is inadequate there has to be some bug in it.
It has me at my wit's end.

=============

template = ERB.new <<-EOF

# rsync push mode

#rsync_push_command check

# <%= rsync_push_command %>

# rsync_forced_command
# <%= rsync_forced_command %>
#

EOF

some program code here

=====
After execution the text "some program code here" appears in the
template's output

Are there some circumstances under which ERB goes haywire?

Is there an alternate syntax to the ERB.NEW <<-EOF ... EOF syntax for
when the text is on multiple lines.

- Frank

Thanks for the advice it was whitespace after the token
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top