【发布时间】:2011-07-12 14:09:47
【问题描述】:
我定义了一个简单的 rake 任务来运行我的 ruby 测试,但问题是 rake 无法加载 Gemfile 中定义的版本的 gem。它得到一个Gem::LoadError。有没有办法告诉 rake 使用哪个 gem 版本?
以下是我系统上安装的 gem:
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)
这是我的 GemFile:
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
这是我得到的例外:
/Users/dummy/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:1612:in `raise_if_conflicts': Unable to activate rdf-0.3.3, because addressable-2.2.6 conflicts with addressable (= 2.2.4) (Gem::LoadError)
我可以通过卸载 addressable 2.2.6 来解决问题,但我需要该 gem 的 never 版本用于另一个项目。
另一种解决方案是使用 rvm gemsets。但是难道不是可以简单地使用给定的 Gemfile 规范运行 rake 吗?
谢谢
【问题讨论】:
-
bundle exec rake <task>工作吗? -
我为我的项目设置了不同的 rvm gemsets。现在它可以工作了......