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