Code Monkey home page Code Monkey logo

Comments (7)

rafaelfranca avatar rafaelfranca commented on July 22, 2024

I just tried to reproduce in a new Rails application using Rails on main and could not:

Screenshot 2024-02-14 at 2 35 26 PM

My Ruby version is ruby 3.2.2 (2023-03-30 revision e51014f9c0) [aarch64-linux].

What is your Ruby version?

from rails.

davidcsete avatar davidcsete commented on July 22, 2024

I just tried to reproduce in a new Rails application using Rails on main and could not:

Screenshot 2024-02-14 at 2 35 26 PM My Ruby version is `ruby 3.2.2 (2023-03-30 revision e51014f9c0) [aarch64-linux]`.

What is your Ruby version?

image

I could reproduce it on an apple silicone using ruby version 3.2.2

from rails.

rafaelfranca avatar rafaelfranca commented on July 22, 2024

I just tried on apple silicon and linux the following steps:

rails new --dev my_app
cd my_app
bin/rails g scaffold posts title body
bin/rails db:migrate

Then I edited posts/index.html.erb to add the invalid code, started the server and got the error pointing to the template. I'm also using 3.2.2.

Which steps did you take to reproduce?

from rails.

dhh avatar dhh commented on July 22, 2024

Oh this is a strange one. This triggers the busted exception:

<ul>
  <li><%= link_to post.title, post %></li>
</ul>

<%= link_to "New book", new_book_path %>

but this does not:

<ul>
  <li>
    <%= link_to post.title, post %>
  </li>
</ul>

<%= link_to "New book", new_book_path %>

from rails.

rafaelfranca avatar rafaelfranca commented on July 22, 2024

aha! I think maybe the compiled template line isn't matching the source line.

from rails.

rafaelfranca avatar rafaelfranca commented on July 22, 2024

Just confirmed this also happens on 7.1

from rails.

nikhilbhatt avatar nikhilbhatt commented on July 22, 2024

Minimum code to regenerate the issue -->

<li><%= link_to post.title, post %></li>

Even if empty spaces are present after closing braces it will result in showing compiled string.

<%= link_to post.title, post %>  <empty_spaces>

Problem

  1. File- activesupport/lib/active_support/core_ext/erb/util.rb method - tokenize
  2. In this tokenize method we are not handling end text that is present after the code %>
  3. Because of this if empty spaces or text is present after code %> it will result in raise NotImplementedError
  4. And the final output will be the compiled code because this method will return nil.

Solution

  1. Handle the edge case if some text is present at the end in string.
  unless source.eos? || source.exist?(/#{start_re}|#{finish_re}/m)
     tokens << [:TEXT, source.rest]
     source.terminate
  end

from rails.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.