Skip to content

Slim not being loaded after upgrade for version 4.0.2 #2448

@ronualdo

Description

@ronualdo

After upgrading from version 3.23.2 to 4.0.2 a few of our tests started failing with the following error:

 ActionView::Template::Error:
        Couldn't find a template file or inline render method for ChipComponent.

This is only happening when having the eager load enabled. We took some investigation and it seems that the slim template handler is not being registered for some reason. While debugging we got this part of the code and checked that ActionView::Template.template_handler_extensions is not including slim as one of the handlers:

https://github.com/ViewComponent/view_component/blob/main/lib/view_component/compiler.rb#L178

After manually injecting "slim" in ActionView::Template.template_handler_extensions we were able to make the specs pass, but we're not sure what is causing the handler not to be registered.

On our application we're including slim-rails version 3.7.0, slim 5.2.1 and rails 7.2.2.2.

Unfortunately we were not able to produce an example of the error but feel free to request any other information.

Backtrace:

     ActionView::Template::Error:
       Couldn't find a template file or inline render method for ChipComponent.
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:38:in `block in compile'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:26:in `synchronize'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:26:in `compile'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:563:in `__vc_compile'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:106:in `render_in'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/actionview-7.2.2.2/lib/action_view/helpers/rendering_helper.rb:42:in `render'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:261:in `render'
     # ./packs/******/app/components/*********_component.html.slim:20:in `call'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/template.rb:113:in `block in safe_method_name_call'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:91:in `instance_exec'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:91:in `block in define_render_template_for'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:146:in `block (2 levels) in render_in'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:237:in `around_render'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:145:in `block in render_in'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:23:in `with_buffer'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:141:in `render_in'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/actionview-7.2.2.2/lib/action_view/helpers/rendering_helper.rb:42:in `render'
     # ./packs/*********/app/views/home/homepage/_hero.html.slim:13:in `block (2 levels) in _packs_marketing_web_app_views_home_homepage__hero_html_slim___3703666319150538091_521800'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/actionview-7.2.2.2/lib/action_view/helpers/capture_helper.rb:50:in `block in capture'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/actionview-7.2.2.2/lib/action_view/buffers.rb:75:in `capture'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/actionview-7.2.2.2/lib/action_view/helpers/capture_helper.rb:50:in `capture'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/slot.rb:72:in `block in to_s'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/base.rb:383:in `with_original_virtual_path'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/slot.rb:71:in `to_s'
     # /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/temple-0.10.4/lib/temple/utils.rb:18:in `escape_html_safe'
     # ./packs/******************/app/views/home/homepage/_hero.html.slim:27:in `block in _packs_marketing_web_app_views_home_homepage__hero_html_slim___3703666319150538091_521800'
# (...)
        # --- Caused by: ---
     # ViewComponent::TemplateError:
     #   Couldn't find a template file or inline render method for ChipComponent.
     #   /home/ronualdo/.rbenv/versions/3.3.8/lib/ruby/gems/3.3.0/gems/view_component-4.0.2/lib/view_component/compiler.rb:38:in `block in compile'

System configuration

Rails version:
7.2.2.2

Ruby version:
3.3.8

Gem version:
4.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions