代码之家  ›  专栏  ›  技术社区  ›  brad

jruby上的cucumber rails使用bundler将gem安装到我的apps根目录中

  •  2
  • brad  · 技术社区  · 14 年前

    刚刚安装 cucumber 0.7.2 cucumber-rails 0.3.1 在OSX上使用JRuby-1.4.0。当我运行bundle安装时,它会在我的主应用程序中放置一个cucumber rails目录,其中包含所有gem代码/依赖项。

    首先,这绝对不是我想要的,我不知道为什么这只发生在cucumber rails上。

    其次,如果我删除这个文件夹并手动安装cucumber rails,当我运行 script/generate feature blah 我得到

    /Users/bradrobertson/.rvm/rubies/jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:344:in `refresh!': source index not created from disk (RuntimeError)
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/rails/vendor_gem_source_index.rb:34:in `refresh!'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/rails/vendor_gem_source_index.rb:29:in `initialize'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/rails/gem_dependency.rb:21:in `new'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/rails/gem_dependency.rb:21:in `add_frozen_gem_path'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/initializer.rb:298:in `add_gem_load_paths'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/initializer.rb:132:in `process'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/initializer.rb:113:in `run'
        from /Users/bradrobertson/Repos/app/source/trunk/config/environment.rb:13
        from /Users/bradrobertson/Repos/app/source/trunk/config/environment.rb:1:in `require'
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/commands/generate.rb:1
        from /Users/bradrobertson/.rvm/gems/jruby-1.4.0/gems/rails-2.3.5/lib/commands/generate.rb:3:in `require'
        from script/generate:3
    

    类似的运行 rake cucumber 我得到

    rake aborted!
    source index not created from disk
    

    所以有些东西显然不起作用。如果我把cucumber rails目录添加回 耙黄瓜 实际上是跑步。

    有人能告诉我为什么它需要在我的rails应用程序中安装gem吗?我以前从没见过这个。

    设置
    JRuby-1.4.0版
    黄瓜-0.7.2
    黄瓜轨0.3.1
    捆扎机0.9.23
    韦布拉特0.7.1

    编辑

    除此之外,我觉得我已经厌倦了尝试让它工作,所以我从gemfile中删除了所有cucumber/cucumber rails dep并重新运行 bundle install . 它仍然会创建cucumber rails目录,而且,我不能运行任何东西,除非该目录存在(rake等),否则我将获得 source index not created from disk 信息。

    编辑2 我刚刚注意到 Rails.root/.bundle/config BUNDLE_PATH: cucumber-rails . 有人知道这是为什么吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Brent Greeff    13 年前

    这和你用bundler安装东西的方式有关。

    你可能做了如下事情:

    捆绑安装黄瓜轨

    如果您这样做,捆绑器假设您要提供您的捆绑包 在项目的这个目录中。

    你的.bundle/config 应该包含:


    bundle_disable_shared_gems:“1”

    删除此文件夹实际上就是删除捆绑包。

    如上所述更改,然后运行:

    捆绑安装。

        2
  •  0
  •   Nick Sieger    14 年前

    我可以使用以下gems从头开始运行一个应用程序:

    $ jruby -S gem list
    
    *** LOCAL GEMS ***
    
    actionmailer (2.3.5)
    actionpack (2.3.5)
    activerecord (2.3.5)
    activerecord-jdbc-adapter (0.9.6)
    activeresource (2.3.5)
    activesupport (2.3.5)
    builder (2.1.2)
    bundler (0.9.25)
    cucumber (0.7.2)
    cucumber-rails (0.3.1)
    database_cleaner (0.5.2)
    diff-lcs (1.1.2)
    gherkin (1.0.24)
    jdbc-sqlite3 (3.6.3.054)
    jruby-openssl (0.7)
    json_pure (1.4.3)
    nokogiri (1.4.1)
    rack (1.0.1)
    rack-test (0.5.3)
    rails (2.3.5)
    rake (0.8.7)
    term-ansicolor (1.0.5)
    trollop (1.16.2)
    webrat (0.7.1)
    

    我必须升级到bundler 0.9.25,并按照以下说明在rails 2中使用bundler:

    http://gembundler.com/rails23.html

    以下是我的gemfile的外观:

    source :gemcutter
    gem "rails", "~> 2.3.5"
    gem 'activerecord-jdbc-adapter', :require => false
    gem 'jdbc-sqlite3', :require => false
    
    group :development do
    end
    
    group :test do
      gem 'cucumber-rails'
      gem 'webrat'
      gem 'database_cleaner'
    end