私はrubyテストを実行するための単純なレーキタスクを定義しましたが、rakeはGemfileで定義されたバージョンのgemをロードしないという問題があります。 Gem::LoadError
になります。どのような宝石のバージョンを使用するレーキに伝える方法はありますか?ここでRake Tests:Gem Load Error
は、私のシステムにインストールされている宝石です:
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
をアンインストールすることで問題を解決できますが、私は他のプロジェクト用にその宝石のバージョンを必要としません。
もう1つの解決策は、rvmジェムセットを使用することです。ただし、指定されたGemfile仕様でレーキを実行することは簡単にできませんか?
bundle exec rake <task>
また、パーティショニングgemsetsは、インスタンスRVMのgemsetsのために使用して、別のオプションになります...があってはならない:私はブライアンの提案は確かにトリックにすべきだと思う
おかげ
'bundle exec rake'は動作しますか? –
Brian
私は自分のプロジェクトに別々のrvm gemsetsをセットアップしました。今それは働く... – behas