[英]How to delete a gem so that I don't need to prepend bundle exec for rails commands?
如果我尝试运行测试,我会得到
Gem :: LoadError:您已经激活了jruby-openssl 0.9.5,但是您的Gemfile需要jruby-openssl 0.8.5。 将bundle exec
附加到命令中可以解决此问题。
我可以按照指示进行操作,并在bundle exec
添加前缀以解决此问题。
发生这种情况是因为我在另一个项目中有一个较新版本的gem。
但是,我不再将其他应用程序与较新版本的gem一起使用,所以我想知道:
我怎样才能真正删除较新的版本,以便在我的rails命令之前不必捆绑exec?
您可以通过运行以下命令删除一个gem(或gem的特定版本)
gem uninstall <gem_name>
如果有多个版本,则提示将询问要删除哪个版本。
使用gem uninstall
-v
开关指定要卸载的版本:
gem uninstall jruby-openssl -v 0.9.5
根据您的操作系统和外壳,可以为命令创建别名或函数(我猜这是在使用Rake)。
例如我的.bashrc
有这个
function bake {
bundle exec rake "$@"
}
因此,现在我可以键入bake whatever
,并且运行的命令是bundle exec rake whatever
。
当您使用全局gemset污染其他项目时,通常会发生这种情况。
隔离gemset的一种好方法是使用rvm 。 安装后,您可以为每个名为.ruby-version
项目创建一个文件,文件上带有一行,以语法<ruby version>@<your project>
标识gemset。 从控制台:
$> echo "2.1@myproject" > .ruby-version
$> cd .
这将为您的项目创建一个gemset,并且每次您输入根目录时,gemset都将特定于该项目。 然后,您可以为不同的项目使用不同的gem版本,并在不弄乱依赖关系的情况下很好地运行rake
(或任何其他命令)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.