tldr;当我在使用Engine的测试应用程序中运行rake任务时,似乎没有遵守Engine依赖项。我必须通过在测试应用程序的Gemfile中指定依赖关系(-D)RY
我使用Jeweler创建了一个Rails引擎作为宝石。它依赖于我在Rakefile中指定的Devise:
gem.add_runtime_dependency 'devise', '~> 1.1.3'
在我的测试应用中,我将引擎依赖项添加到Gemfile,bundle install
显示已选择并安装了Devise。但是,如果我运行初始rake db:migrate
,则会抛出错误:
uninitialized constant Devise
<snip>config/initializers/devise.rb:3
如果我手动将Devise依赖项添加到测试应用程序的Gemfile中,它可以正常工作。我可能错过了一些显而易见的事情,但是在这个阶段,测试应用程序似乎正确地选择并安装了依赖项,但由于某种原因,初始化程序代码会失败,除非在测试应用程序的Gemfile中再次列出依赖项。
答案 0 :(得分:7)
您可能已经找到了解决方案或解决方法,但我会解释如何解决这个问题,以防有人遇到同样的问题。
刚刚提出:
require 'devise'
在lib / my_gem.rb中。
Rails自动加载Gemfile中指定的gem,没有其他内容。如果您正在开发具有依赖关系的gem,则必须手动要求它们。