使用Rails 3引擎的Gem依赖项在初始化程序中失败

时间:2010-11-25 06:27:43

标签: ruby-on-rails-3 gem bundler

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中再次列出依赖项。

1 个答案:

答案 0 :(得分:7)

您可能已经找到了解决方案或解决方法,但我会解释如何解决这个问题,以防有人遇到同样的问题。

刚刚提出:

require 'devise'

在lib / my_gem.rb中。

Rails自动加载Gemfile中指定的gem,没有其他内容。如果您正在开发具有依赖关系的gem,则必须手动要求它们。