Je reçois une erreur de méthode non définie lors de l'exécution de rails sur une machine de préproduction. Le message d'erreur ressemble à ceci:Rails méthode non définie pour ActionView :: Helpers :: TagHelper
undefined method `content_tag' for module `ActionView::Helpers::TagHelper'
(in /home/user/my-rails-app/app/assets/javascripts/templates/general/test.mustache)
L'erreur apparaît dans le fichier de mise en page, sur la ligne qui comprend 'application.js':
<%= javascript_include_tag "application" %>
Le stacktrace ressemble à ceci:
kernel/delta/module.rb:39:in `alias_method'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:74:in `__script__'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:59:in `__script__'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:38:in `__script__'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:1:in `__script__'
kernel/common/code_loader.rb:243:in `require'
kernel/common/kernel.rb:705:in `require'
activesupport (4.0.2) lib/active_support/dependencies.rb:229:in `require'
activesupport (4.0.2) lib/active_support/dependencies.rb:214:in `load_dependency'
activesupport (4.0.2) lib/active_support/dependencies.rb:229:in `require'
haml (4.0.5) lib/haml/template.rb:3:in `__script__'
kernel/common/code_loader.rb:243:in `require'
kernel/common/kernel.rb:705:in `require'
activesupport (4.0.2) lib/active_support/dependencies.rb:229:in `require'
activesupport (4.0.2) lib/active_support/dependencies.rb:214:in `load_dependency'
activesupport (4.0.2) lib/active_support/dependencies.rb:229:in `require'
haml (4.0.5) lib/haml/railtie.rb:5:in `__script__'
kernel/common/eval.rb:43:in `instance_eval'
activesupport (4.0.2) lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
activesupport (4.0.2) lib/active_support/lazy_load_hooks.rb:28:in `on_load'
kernel/bootstrap/array.rb:66:in `each'
activesupport (4.0.2) lib/active_support/lazy_load_hooks.rb:27:in `on_load'
haml (4.0.5) lib/haml/railtie.rb:4:in `__script__'
...
Je crois que cette erreur est due au fait que le module ActionView::Helpers::TagHelper
n'a pas content_tag
défini au moment où Haml est chargé. (Le code correspondant est here). Pour une raison quelconque, ce problème n'apparaît pas dans d'autres environnements identiques. Quelqu'un peut-il suggérer un correctif/solution de contournement pour ce problème?
[UPDATE]
Cela se produit uniquement en mode développement. J'utilise rbx-2.2.6, actionpack version 4.0.2, et haml 4.0.5
Je vois quelque chose de similaire dans une application Sinatra, mais seulement dans la production: ' constante non-initialisée Haml :: ActionView' de 'haml-4.0.5/lib/haml/template/plugin.rb: 4'. Tout ce que je devais faire était 'require' view_view/template/handlers/erb'' avant de 'require' haml/template/plugin'' –