2010-11-25 9 views
4

tldr;エンジンを使用するテストアプリケーションでレーキタスクを実行すると、Engineの依存関係は尊重されていないようです。テストアプリのGemfileに依存関係を指定して(-D)RYにする必要がありますRails 3エンジンのGem依存関係はイニシャライザで失敗する

私はJewelerを使用してRailsエンジンを宝石として作成しました。私はGemfileにエンジンの依存関係を追加私のテストのアプリで

gem.add_runtime_dependency 'devise', '~> 1.1.3' 

、およびbundle installは工夫がピックアップされ、インストールされていることを示しています。それは私がRakefileで指定した工夫に依存しています。私は最初のrake db:migrateを実行する場合は、エラーがスローされます。

uninitialized constant Devise 
<snip>config/initializers/devise.rb:3 

私は手動でそれが動作テストアプリケーションのGemfileに工夫依存性を追加した場合。私は恐らく何かを見逃してしまったかもしれませんが、この段階ではテストアプリが依存関係を正しく選択してインストールするように見えますが、何らかの理由でテストアプリのGemfileに依存関係が再度リストされない限り、

答えて

7

あなたは解決策または回避策を見つけた可能性が高いですが、誰かが同じ問題を抱えている場合には、これを解決する方法を説明します。

はただ置く:libに

require 'devise' 

/my_gem.rb。

Railsは、Gemfileで指定された宝石を自動的にロードします。依存関係のある宝石を開発する場合は、それらを手動で要求する必要があります。

+1

それは私がやったことです。私はRakefile/.gemspec/Gemfileの役割が何であったかについては無知でしたが、Yehudaの優れた投稿(.gemspecとGemfileの役割の明確化)(http://yehudakatz.com/2010/12/16/clarifying -the-gemspec-and-gemfile /の役割)がすべてをクリアしました! – justsee

+0

@justsee:リンクのおかげで、宝石の開発は最初は暗いかもしれませんが、このような投稿は混乱を解消するのに大いに役立ちます。 –

関連する問題