如何删除gem以便我不需要为rails命令添加bundle exec?

时间:2014-07-21 19:23:59

标签: ruby-on-rails ruby rspec

如果我尝试运行测试,我会

Gem :: LoadError:你已经激活了jruby-openssl 0.9.5,但你的Gemfile需要jruby-openssl 0.8.5。将bundle exec添加到您的命令可能会解决此问题。

我可以按照指示行事,并在bundle exec前加以解决这个问题 发生这种情况是因为我在另一个项目中有一个较新的版本的gem。

但是我不再使用其他应用程序与更新版本的gem,所以我想知道:

如何实际删除新版本,以便我不必在执行rails命令之前捆绑exec?

4 个答案:

答案 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(或任何其他命令)就好了,不会弄乱依赖项。