2010-11-25 64 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

相关问题