RVM似乎在ruby版本之间混合了宝石和二进制文件

时间:2010-11-08 19:25:12

标签: ruby rspec gem rvm

我使用RVM并有一些遗留项目,我使用Ruby 1.8.7,rails 2.3.x,rspec 1.3.0和rspec-rails 1.3.2。但是在安装Ruby 1.9.2之后,一些宝石rvm搞乱了1.9.2和我的1.8.7 gemset的Gem路径:

当我用rake运行我的规格时,我收到以下错误:

"\"/home/vermelho/.rvm/gems/ruby-1.8.7-p302@rails2/gems/paperclip-2.3.3/data/paperclip\""
config.load_paths is deprecated and removed in Rails 3, please use autoload_paths instead
config.load_paths= is deprecated and removed in Rails 3, please use autoload_paths= instead
Exception encountered: #<OptionParser::InvalidOption: --loadby>
backtrace:
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/option_parser.rb:18:in `parse!'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/option_parser.rb:4:in `parse!'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration_options.rb:64:in `parse_command_line_options'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration_options.rb:46:in `parse_options'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/command_line.rb:7:in `initialize'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/monkey/spork/test_framework/rspec.rb:4:in `new'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/monkey/spork/test_framework/rspec.rb:4:in `run_tests'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:13:in `block in run'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/forker.rb:21:in `block in initialize'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/forker.rb:18:in `fork'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/forker.rb:18:in `initialize'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `new'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `run'
/home/vermelho/.rvm/gems/ruby-1.9.2-p0/gems/spork-0.8.4/lib/spork/server.rb:47:in `run'
/home/vermelho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/drb/drb.rb:1558:in `perform_without_block'
/home/vermelho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/drb/drb.rb:1518:in `perform'
/home/vermelho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/drb/drb.rb:1592:in `block (2 levels) in main_loop'
/home/vermelho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/drb/drb.rb:1588:in `loop'
/home/vermelho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/drb/drb.rb:1588:in `block in main_loop'

在我目前使用的gemset中没有安装rspec 2,而我当前的ruby安装和gemset对于来自另一个ruby安装的gems一无所知,对吧?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。答案是Spork正在使用另一个版本的ruby运行,可能是另一个ruby应用程序。如果使用--drb选项,Rspec会尝试连接到spork。 Spork使用已加载的rspec版本。简单的解决方案,在尝试运行rspec之前停止其他spork进程。

我不相信这个问题与RVM有关。

答案 1 :(得分:1)

我从来没有见过RVM这样做,所以我怀疑某些东西已经预先存在,然后RVM被加载到系统中。 Ruby 1.8.7是系统安装还是在RVM之外加载的一些宝石?如果是这样的话,RVM实际上无法阻止预先存在的配置。

我唯一能想到的是Rails捕获了gems的路径,然后安装了RVM。我在RVM下安装了Rails,然后转换为Rails 3并使用RVM控制下的所有内容升级了我的项目,但没看到你是什么。

您可能需要向Wayne Seguin(irc.freenode.net上的#rvm中的wayneeseguin)寻求帮助。我很确定他会问你所用的RVM版本,所以rvm -v的输出就准备好了。目前的转速是:

rvm -v
rvm 1.0.21 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]