Closed phiggins closed 9 years ago
Interesting! uhh... does ERB even need to play a part? Can you reduce this?
Good point, I'm not sure. That was just where the failure had happened.
If I move the code in the <%= %>
tags into a ruby file and use debride on it, it parses fine.
def test_process_erb_bug
# :
# <%= link_to '1 day ago', :days => 1 %>
# _buf = ''
# _buf << ':\n'
# @output_buffer.append=( link_to '1 day ago', :days => 1 )
# _buf << '\n'
# _buf.to_s
sexp = Debride.new.process_erb "test/bug.erb"
exp = s(:block,
s(:lasgn, :_buf, s(:str, "")),
s(:call, s(:lvar, :_buf), :<<, s(:str, ":\n")),
s(:attrasgn, s(:ivar, :@output_buffer), :append=,
s(:call, nil, :link_to,
s(:str, "1 day ago"), s(:hash, s(:lit, :days), s(:lit, 1)))),
s(:call, s(:lvar, :_buf), :<<, s(:str, "\n")),
s(:call, s(:lvar, :_buf), :to_s))
assert_equal exp, sexp
end
this passes on ruby 2.0 and 2.2.2. Do you really think it is specific to ruby 2.2.3??
It doesn't appear to be specific to 2.2.3. If I do a gem install debride debride-erb
in a clean environment with any of the ruby versions I have installed locally I get the same failure.
Here are the ruby versions I tried:
ruby-1.9.3-p551
ruby-2.0.0-p598
ruby-2.1.5
ruby-2.1.6
ruby-2.2.0
ruby-2.2.1
ruby-2.2.3
Here is my test script and output in case I'm doing something stupid: https://gist.github.com/phiggins/8edab52615f622bb4d56
I'm fucking stumped by this stupid bug. I can reproduce it via top-level running, but not via tests. The code is all the same. The entry points look fine. But no boom. WTF.
This was a bitch to fix. Done.
Yay! :tada:
We just upgrade a rails app to use ruby 2.2.3 from 2.1.6, and I'm getting an exception parsing some ERB. Here's a minimal case I came up with:
Here's my debride versions: