繁体   English   中英

如何删除gem,这样我就不需要在rails命令前添加bundle exec?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM