Project

General

Profile

Bug #22080

uninitialized constant ActionView::Template::Handlers::Rabl

Added by Anonymous almost 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Difficulty:
Triaged:
Bugzilla link:
Fixed in Releases:
Found in Releases:

Description

After the commit for #3763 went in, my production build DEB instance shows:

uninitialized constant ActionView::Template::Handlers::Rabl (NameError)
  /usr/share/foreman/config/initializers/rabl_init.rb:73:in `<top (required)>'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:655:in `block in load_config_initializer'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/activesupport-5.1.4/lib/active_support/notifications.rb:168:in `instrument'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:654:in `load_config_initializer'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:611:in `each'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:611:in `block in <class:Engine>'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `instance_exec'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:30:in `run'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:59:in `block in run_initializers'
  /usr/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
  /usr/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
  /usr/lib/ruby/2.3.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
  /usr/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
  /usr/lib/ruby/2.3.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `each'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:48:in `tsort_each_child'
  /usr/lib/ruby/2.3.0/tsort.rb:415:in `call'
  /usr/lib/ruby/2.3.0/tsort.rb:415:in `each_strongly_connected_component_from'
  /usr/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
  /usr/lib/ruby/2.3.0/tsort.rb:347:in `each'
  /usr/lib/ruby/2.3.0/tsort.rb:347:in `call'
  /usr/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
  /usr/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
  /usr/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/initializable.rb:58:in `run_initializers'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/application.rb:353:in `initialize!'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/railtie.rb:185:in `public_send'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/railties-5.1.4/lib/rails/railtie.rb:185:in `method_missing'
  /usr/share/foreman/config/environment.rb:5:in `<top (required)>'
  config.ru:3:in `require'
  config.ru:3:in `block in <main>'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `instance_eval'
  /usr/share/foreman/vendor/ruby/2.3.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

Reverting d73b91986d7c fixes it.

Gemfile.lock Gemfile.lock 12.8 KB Anonymous, 12/27/2017 12:28 PM

Related issues

Related to Foreman - Feature #3763: Ability for engine/plugin to extend RABL responsesClosed2013-11-26

Associated revisions

Revision 299a8f8d (diff)
Added by Timo Goebel almost 3 years ago

fixes #22080 - rabl is loaded before patching

History

#1 Updated by Anonymous almost 3 years ago

  • Related to Feature #3763: Ability for engine/plugin to extend RABL responses added

#2 Updated by Timo Goebel almost 3 years ago

I am unable to reproduce this on one of my RHEL production host. I might need some help with this. Maybe this only happens on Debian?

Anyway, this constant is defined here:
https://github.com/nesquena/rabl/blob/11c51e36987bdb7fc63cccbc499312ff8564a02a/lib/rabl/template.rb#L43-L63

It should be loaded as soon as we require 'rabl' in the initializer:
https://github.com/nesquena/rabl/blob/11c51e36987bdb7fc63cccbc499312ff8564a02a/lib/rabl.rb#L86-L88

#3 Updated by Anonymous almost 3 years ago

adding Gemfile.lock

#4 Updated by Shimon Shtein almost 3 years ago

After a short investigation, I have found the reason for this bug.

TL;DR: ActionView::Base should be loaded before Rabl handler is monkey patched (https://github.com/theforeman/foreman/blob/536799c3400c56f2fe38772bf64fd6be8c0810f8/config/initializers/rabl_init.rb#L73).

In the current code we use font-awesome-sass which is loaded before rabl_init.rb that does for us.
Here is the stack snip for proper initialization (that is missing in the provided gemfile.lock):

foreman/gems/font-awesome-sass-4.6.2/lib/font_awesome/sass/rails/railtie.rb @ line 8
foreman/gems/actionview-5.1.4/lib/action_view/base.rb @ line 139
foreman/gems/actionview-5.1.4/lib/action_view/base.rb @ line 215
foreman/gems/rabl-0.13.1/lib/rabl/railtie.rb @ line 5

#5 Updated by The Foreman Bot almost 3 years ago

  • Assignee set to Timo Goebel
  • Status changed from New to Ready For Testing
  • Pull request https://github.com/theforeman/foreman/pull/5143 added

#6 Updated by Timo Goebel almost 3 years ago

  • % Done changed from 0 to 100
  • Status changed from Ready For Testing to Closed

Also available in: Atom PDF