2

私はRails3.1エンジンを開発していますが、統合テストを行うために、単純な古いERBの代わりにSLIMを使用したいと思います。だから私は単にファイルに追加しようとしましたがs.add_development_dependency "slim"、ファイル.gemspecの名前をに変更すると、Railsは次のように文句を言います。index.html.erbindex.html.slim

テンプレートdummy/index、application / indexに{:locale => [:en]、:formats => [:html]、:handlers => [:erb、:builder]}がありません。検索対象:* "/ Users / josh / Documents / Work / Sientia / iq_menu / full / spec / dummy / app / views" * "/ Users / josh / Documents / Work / Sientia / iq_menu / full / app / views"

slim-railsgemとgemでも試してみましhaml-railsたが、ファイルの名前を変更するindex.html.hamlと同じエラーが発生しました。

私は何が間違っているのですか?

4

3 に答える 3

4

明らかにこれは古い問題ですが、今日(今回はRails 4で)同じ問題に遭遇しました。ここで問題を明確にできると思います。

Bundlerは2つの役割を果たします。1つはgemをフェッチしてコードを利用可能にすることであり、もう1つはそのコードをプロジェクトに実際に「要求」することです。

gemspecに依存関係を追加すると、最初の機能は実行されますが、2番目の機能は実行されません。

アプリケーションの本番環境での使用では、gemspecによって識別された依存関係がアプリケーションのバンドルに効果的に追加されるため、アプリケーションのバンドラーはgemをフェッチして必要とします。

参照がgemspecにのみあり、Gemfileにはない場合、事実上何も要求を実行していないため、gemは初期化されず、テンプレートエンジンはアプリケーションで使用できません。Gemfileに追加すると、初期化されて登録されます。

スリム/ハムルのようなものには、両方が必要だと思います。Gemfile参照があるだけでは、アプリケーションは依存関係を認識できません。gemspec参照があるだけでは、ダミーアプリでエンジンが初期化されません。

于 2014-08-05T21:51:08.960 に答える
3

標準のhaml宝石を使用できますが、次のengine.rbものが必要です。

require 'haml'

于 2013-06-25T14:49:38.180 に答える
2

Hamlの場合は

gem 'haml-rails'

あなたのGemfileに

于 2012-09-20T08:50:13.363 に答える