2010-11-25 36 views
4

tldr;當我在使用引擎的測試應用程序中運行rake任務時,引擎依賴關係似乎不受尊重。我必須通過指定測試應用程序的Gemfile中的依賴項來指定(-D)RY使用Rails 3引擎的Gem依賴關係在初始化器中失敗

我已經使用珠寶商創建了一個Rails引擎作爲寶石。它有我在Rake文件所指定設計上的依賴關係:

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

在我的測試程序,我添加引擎依賴於Gemfile中,並bundle install表明,設計拾取和安裝。但是,如果我運行一個初始rake db:migrate拋出一個錯誤:

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

如果我手動添加設計依賴於測試應用程序的Gemfile中它的工作原理。我可能錯過了一些顯而易見的東西,但是在這個階段,測試應用程序看起來會正確安裝依賴項,但由於某種原因,初始化程序代碼將失敗,除非依賴項在測試應用程序的Gemfile中再次列出。

回答

7

你很可能找到了解決方案或解決方法,但我會把我解決這個問題的方式解決,以防有人遇到同樣的問題。

只要把:

require 'devise' 

中的lib/my_gem.rb。

Rails會自動加載Gemfile中指定的寶石,而不是其他任何東西。如果您正在開發具有依賴性的gem,則必須手動要求它們。

+1

是的,這就是我所做的。我對Rakefile/.gemspec/Gemfile的角色一無所知,但是Yehuda的優秀文章[澄清.gemspec和Gemfile的角色](http://yehudakatz.com/2010/12/16/clarifying -the-gemspec-and-gemfile /)角色清除了一切! – justsee 2011-02-17 00:02:58

相關問題