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" ファイルを呼び出さず、エンジンの Gemfile に gem "haml" を追加するだけで Haml を正しく初期化するのはなぜですか?