代码之家  ›  专栏  ›  技术社区  ›  Brian Kelly

为什么我的Rails应用程序找不到与它一起打包的宝石?

  •  3
  • Brian Kelly  · 技术社区  · 15 年前

    我有一个Rails应用程序,使用Cucumber和RSpec。我们将gems存储在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)
    

    空的空的意思是宝石不见了吗?

    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'))
    

    看起来一切正常,但它仍然拒绝运行。

    我错过了什么明显的东西吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Thomas Brice    15 年前

    看起来你有 cucumber rspec ,及 rspec-rails 冷冻(未包装)在您的 vendor/gems 目录,但缺少的依赖项 黄瓜 [] 表示缺少。

    我会重新开始:

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

    然后在本地安装gems:

    gem install rspec rspec-rails cucumber
    

    此时,您应该能够成功地测试应用程序。

    最后,打开包装,然后放入您的 供应商/宝石 dir如果需要:

    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
    

    将测试环境的所有内容解包到 . 这将打开包装 nokogiri 您当前已在本地安装但未冻结到应用程序中的gem。