rails環境でbetter_errorsとhamlでErubi に関するエラーが発生した時の対処法
環境
- Ruby 2.4.1
- Rails 4.2.8
- haml 5.0.2
- haml-rails 1.0.0
- better_errors 2.3.0
エラー内容
/home/user/src/vendor/bundle/ruby/2.4.0/gems/haml-5.0.2/lib/haml/helpers/safe_erubi_template.rb:5: warning: toplevel constant Erubi referenced by ActionView::Template::Handlers::ERB::Erubi
/home/user/src/vendor/bundle/ruby/2.4.0/gems/haml-5.0.2/lib/haml/helpers/safe_erubi_template.rb:5:in `<module:Haml>': superclass must be a Class (Module given) (TypeError)
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/haml-5.0.2/lib/haml/helpers/safe_erubi_template.rb:4:in `<top (required)>'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `block in require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/haml-5.0.2/lib/haml/railtie.rb:30:in `block (2 levels) in <class:Railtie>'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/lazy_load_hooks.rb:27:in `each'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/lazy_load_hooks.rb:27:in `on_load'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/haml-5.0.2/lib/haml/railtie.rb:22:in `block in <class:Railtie>'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/initializable.rb:30:in `instance_exec'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/initializable.rb:30:in `run'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `call'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
from /home/user/.rbenv/versions/2.4.1/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/initializable.rb:54:in `run_initializers'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/application.rb:352:in `initialize!'
from /home/user/src/config/environment.rb:5:in `<top (required)>'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `block in require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:274:in `require'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/application.rb:328:in `require_environment!'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/commands/commands_tasks.rb:142:in `require_application_and_environment!'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/commands/commands_tasks.rb:128:in `generate_or_destroy'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/commands/commands_tasks.rb:50:in `generate'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/user/src/vendor/bundle/ruby/2.4.0/gems/railties-4.2.8/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
対処法
better_errorsのバージョンを 2.3.0
から 2.2.0
にする
# Gemfile
group :development do
gem 'better_errors', "2.2.0"
end
補足
こちらは暫定対処なので、下記Issueが解決されたらbetter_errorsのバージョンアップができるようになると思います。
- better_errors側のIssue https://github.com/charliesome/better_errors/issues/396
- haml側のIssue https://github.com/haml/haml/pull/948