Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rake测试:Gem负载错误_Ruby_Gem_Rake - Fatal编程技术网

Ruby Rake测试:Gem负载错误

Ruby Rake测试:Gem负载错误,ruby,gem,rake,Ruby,Gem,Rake,我定义了一个简单的rake任务来运行我的ruby测试,但是存在一个问题,rake没有使用Gemfile中定义的版本加载gem。它得到一个Gem::LoadError。有没有办法告诉rake使用哪个gem版本 以下是安装在我的系统上的gems: addressable (2.2.6, 2.2.4) bundler (1.0.15) libarchive (0.1.2) nokogiri (1.5.0) rake (0.9.2, 0.8.7) rdf (0.3.3) 这是我的档案: source

我定义了一个简单的rake任务来运行我的ruby测试,但是存在一个问题,rake没有使用Gemfile中定义的版本加载gem。它得到一个
Gem::LoadError
。有没有办法告诉rake使用哪个gem版本

以下是安装在我的系统上的gems:

addressable (2.2.6, 2.2.4)
bundler (1.0.15)
libarchive (0.1.2)
nokogiri (1.5.0)
rake (0.9.2, 0.8.7)
rdf (0.3.3)
这是我的档案:

source :rubygems

gem 'nokogiri', '1.5.0'
gem 'rdf', '0.3.3'
gem 'addressable', '2.2.4'
gem 'libarchive', '0.1.2'
这里是rake任务:

require 'rake/testtask'

task :default => [:test]

desc "Run basic tests"
Rake::TestTask.new do |test|
  test.libs << "test"
  test.test_files = Dir["test/test_*.rb"]
  test.verbose = true
end
我可以通过卸载
可寻址2.2.6
来解决这个问题,但我需要另一个项目的gem的never版本

另一个解决方案可能是使用rvm Gemset。但是,使用给定的Gemfile规范运行rake难道不简单吗


谢谢

我认为布赖恩的建议确实应该起到关键作用:

bundle exec rake <task>
有关更多信息,请参阅。请注意,后一种解决方案仍然需要
bundle exec
方法来避免gem冲突

希望这有帮助


彼得使用RVM宝石(http://beginrescueend.com/gemsets/basics/)这可能是处理项目间gem版本控制冲突的最佳方法。对于我的场景,它是有效的…

bundle exec rake是否有效?我为我的项目设置了不同的rvm gemeset。现在它工作了。。。
bundle exec rake <task>
bundle install --path=.bundler