我正在开发一个 Rails3 引擎应用程序,我想使用 Haml 作为视图。
首先,我所做的是将其添加到引擎 Gemfile 中:
gem "haml"
当我测试我的引擎时,它工作正常(我使用https://github.com/josevalim/enginex生成 gem 并使用虚拟应用程序对其进行测试)。
当我尝试在真正的 Rails 应用程序上使用引擎时,我的问题就开始了。该应用程序在它自己的 Gemfile 上没有 gem“haml”,因此它没有初始化 Haml,所以我收到模板未找到错误,因为它不是在寻找 .haml 视图。我在想,通过在引擎上需要 Haml,Rails 应用程序也需要它就足够了。
我现在所做的是使用以下代码在引擎上添加 config/initializers/haml.rb:
require 'haml'
Haml.init_rails(binding)
它现在正在工作,但我想知道这是否真的是一个好方法。为什么 Rails 没有调用 Haml “init.rb” 文件,而是通过将 gem “haml” 添加到引擎 Gemfile 来正确初始化 Haml?