gpt4 book ai didi

ruby - rake 测试 : Gem Load Error

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:59 25 4
gpt4 key购买 nike

我定义了一个简单的 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 不是很简单吗?

谢谢

最佳答案

我认为 Brian 的建议确实可以解决问题:

bundle exec rake <task>

此外,分区 gemsets,例如使用 rvm gemsets,将是另一种选择......应该不需要卸载任何 gem 版本。

另一种分区技术是将所有 gem 安装在项目目录(而不是将它们安装为系统 gem),使用类似于:

bundle install --path=.bundler

参见 http://gembundler.com/man/bundle-install.1.html获取更多信息。请注意,后一种解决方案仍需要 bundle exec 方法来避免 gem 冲突。

希望对您有所帮助,

彼得

关于ruby - rake 测试 : Gem Load Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com