ruby-on-rails - 为什么我的 Rails 应用程序找不到与它一起打包的 gem?

标签 ruby-on-rails rubygems rspec cucumber

我有一个使用 Cucumber 和 RSpec 的 Rails 应用程序。我们将 gem 存储在 vendor/gems 下,并尝试在 CI 服务器中构建应用程序(运行测试)。

当我尝试运行我们的测试时,出现以下错误:

Missing these required gems:
  cucumber  >= 0.3.11
  rspec-rails  >= 1.2.6

当我运行 RAILS_ENV=test rake gems 时,我得到以下信息:

 - [F] activerecord-oracle-adapter
    - [R] activerecord >= 1.15.5.7843
 - [F] thoughtbot-factory_girl = 1.2.0
 - [F] cucumber >= 0.3.11
    - [ ] term-ansicolor >= 1.0.3
    - [ ] treetop >= 1.2.6
    - [ ] diff-lcs >= 1.1.2
    - [I] builder >= 2.1.2
 - [F] webrat >= 0.4.4
    - [I] nokogiri >= 1.2.0
 - [F] rspec >= 1.2.6
 - [F] rspec-rails >= 1.2.6
    - [F] rspec >= 1.2.7
    - [ ] rack >= 0.4.0
 - [F] thoughtbot-shoulda >= 2.10.2

I = Installed
F = Frozen
R = Framework (loaded before rails starts)

空白 [ ] 是否意味着 gem 丢失?

config/environments/test.rb 包含以下内容:

config.gem "cucumber",           :lib => false,          :version => ">=0.3.11" unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/cucumber'))
config.gem "webrat",             :lib => false,          :version => ">=0.4.4"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/webrat'))
config.gem "rspec",              :lib => false,          :version => ">=1.2.6"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/rspec'))
config.gem "rspec-rails",        :lib => "spec/rails",   :version => ">=1.2.6"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
config.gem "thoughtbot-shoulda", :lib => false,          :version => ">=2.10.2" unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/shoulda'))

所以一切看起来都井井有条,但它仍然拒绝运行。

我是否漏掉了一些明显的东西?

最佳答案

看起来你有 cucumber , rspec , 和 rspec-rails冷冻(未包装)在你的vendor/gems目录,但您缺少 cucumber 的依赖项和 rspec-rails .正如对问题的评论所说,[]表示缺少。

我会重新开始:

rm -rf vendor/gems/cucumber
rm -rf vendor/gems/rspec-rails
rm -rf vendor/gems/rspec

然后在本地安装gems:

gem install rspec rspec-rails cucumber

此时您应该能够成功测试该应用。

最后,将其解压到您的 vendor/gems 中如果需要,目录:

RAILS_ENV=test rake gems:unpack:dependencies GEM=rspec-rails
RAILS_ENV=test rake gems:unpack:dependencies GEM=cucumber

或者:

RAILS_ENV=test rake gems:unpack:dependencies

将测试环境的所有内容解压到 vendor/gems 中.这将解压 nokogiri您当前已在本地安装但未卡住到应用程序中的 gem。

关于ruby-on-rails - 为什么我的 Rails 应用程序找不到与它一起打包的 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836603/

相关文章:

ruby-on-rails - 使用 REST API 从 Dynamics CRM 导入数据

ruby-on-rails - 在 Heroku 上充当标签

ruby - 您的供应商/缓存目录中似乎缺少一些 gem

ruby - Watir/Rspec 浏览器循环

ruby-on-rails - 从我的 JS 客户端对一个 URL/方法执行 PUT,另一个被击中

ruby-on-rails - Rails 应用程序中的计算逻辑应该放在哪里?

ruby-on-rails - 在这种情况下我如何模拟一个对象?没有明显的方法可以用模拟替换对象

ruby-on-rails - RSpec 'Expect' 语法和惯用属性规范

ruby-on-rails - 安装的 gem 出现 Rails "Missing these required gems"错误

ruby - 安装 pg gem 时遇到问题