如果我尝试运行测试,我会
Gem :: LoadError:你已经激活了jruby-openssl 0.9.5,但你的Gemfile需要jruby-openssl 0.8.5。将bundle exec
添加到您的命令可能会解决此问题。
我可以按照指示行事,并在bundle exec
前加以解决这个问题
发生这种情况是因为我在另一个项目中有一个较新的版本的gem。
但是我不再使用其他应用程序与更新版本的gem,所以我想知道:
如何实际删除新版本,以便我不必在执行rails命令之前捆绑exec?
答案 0 :(得分:0)
您可以通过运行
删除gem(或特定版本的gem)gem uninstall <gem_name>
如果有多个版本,则提示将询问要删除的版本。
答案 1 :(得分:0)
将gem uninstall
与-v
开关一起使用以指定要卸载的版本:
gem uninstall jruby-openssl -v 0.9.5
答案 2 :(得分:0)
根据您的操作系统和shell,您可以为命令创建别名或函数(我猜这是使用Rake)。
例如,我在.bashrc
function bake {
bundle exec rake "$@"
}
现在我可以输入bake whatever
,并且运行的命令是bundle exec rake whatever
。
答案 3 :(得分:0)
这通常发生在您污染的情况下。全球宝石集合用于不同的项目。
隔离gemsets的一个好方法是使用rvm。安装完成后,您可以为每个名为.ruby-version
的项目创建一个文件,其上有一行,用于标识语法为<ruby version>@<your project>
的gemset。从控制台:
$> echo "2.1@myproject" > .ruby-version
$> cd .
这将为您的项目创建一个gemset,每次进入根目录时,gemset都将特定于该项目。然后你可以为不同的项目使用不同的gem版本并运行rake
(或任何其他命令)就好了,不会弄乱依赖项。