Ruby on rails jruby上的Cucumber rails使用bundler将gem安装到我的应用程序根目录中

Ruby on rails jruby上的Cucumber rails使用bundler将gem安装到我的应用程序根目录中,ruby-on-rails,jruby,cucumber,jrubyonrails,Ruby On Rails,Jruby,Cucumber,Jrubyonrails,刚刚用OSX上的jruby-1.4.0安装了cucumber 0.7.2和cucumber rails 0.3.1。当我运行bundle安装时,它会在我的主应用程序中放置一个cucumber rails目录,其中包含所有gem代码/依赖项 首先,这绝对不是我想要的,我不知道为什么这只发生在cucumber rails上 第二,如果我删除这个文件夹,然后手动安装cucumber rails,当我运行script/generate feature blah /Users/bradrobertson/

刚刚用OSX上的jruby-1.4.0安装了cucumber 0.7.2和cucumber rails 0.3.1。当我运行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 aborted!
source index not created from disk
类似地运行
rake cumber

/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 aborted!
source index not created from disk
所以有些东西显然不起作用。如果我将cucumber rails目录添加回,那么我的
rake cucumber
实际上会运行

有人能告诉我为什么需要在我的rails应用程序中安装gem吗?我以前从未见过这种情况

设置
jruby-1.4.0
黄瓜-0.7.2
Cumber rails 0.3.1
捆扎机0.9.23
webrat 0.7.1

编辑

除此之外,我觉得我已经厌倦了让它工作,所以我从Gemfile中删除了所有cucumber/cucumber rails Dep,并重新运行
bundle安装
。它仍然会创建cucumber rails目录,而且,除非该目录存在,否则我不能运行任何东西(rake等)。否则,我会得到
源索引,而不是从磁盘创建的
消息

EDIT2
我刚刚注意到我的
Rails.root/.bundle/config
bundle\u路径:cumber-Rails
。有人知道为什么会出现这种情况吗?

我能够从零开始使用以下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,并按照此处的说明将Bundler与Rails 2一起使用:

下面是我的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

这与您使用bundler安装东西的方式有关

您可能做了如下操作:

捆绑安装黄瓜轨道

如果您这样做,绑定器将假定您想要出售您的绑定 在项目内的此目录中

您的.bundle/config 应该只包含:


捆绑\u禁用\u共享\u宝石:“1”

删除此文件夹实际上是在删除包

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


bundle安装。

嘿,对不起,我没有时间验证这一点,我会等到我完全忘记这个问题后再开始,你完全正确,我前几天碰巧开始查看bundler源代码,并意识到这里发生了什么。谢谢你让我再次注意到这一点!