Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何删除gem,这样我就不需要为rails命令预先编写bundle exec了?_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 如何删除gem,这样我就不需要为rails命令预先编写bundle exec了?

Ruby on rails 如何删除gem,这样我就不需要为rails命令预先编写bundle exec了?,ruby-on-rails,ruby,rspec,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?

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

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

我可以按照指示做,并预先编写bundle exec来解决这个问题。 这是因为我在另一个项目中有一个更新版本的gem

但是,我不再将另一个应用程序与较新版本的gem一起使用,因此我想知道:


我如何才能真正删除较新的版本,这样我就不必在使用rails命令之前捆绑exec?

您可以通过运行

gem uninstall <gem_name>
如果有多个版本,则提示将询问要删除的版本。

使用gem uninstall和-v开关指定要卸载的版本:

gem uninstall jruby-openssl -v 0.9.5 

根据您的操作系统和shell,您可以为命令创建别名或函数,我猜这是在使用Rake

例如,我在我的.bashrc中有这个

功能烘焙{ bundle-exec-rake$@ }
现在我可以键入bake which,运行的命令是bundle exec rake which。

这通常发生在您将全局gemset用于不同项目时

隔离宝石的一个好方法是使用。安装后,您可以为每个项目创建一个名为.ruby version的文件,该文件上有一行用语法@标识gemset。从控制台:

$> echo "2.1@myproject" > .ruby-version
$> cd .

这将为您的项目创建一个gemset,每次您进入根目录时,gemset将特定于此项目。然后,您可以为不同的项目使用不同的gem版本,并运行rake或任何其他命令,而不会弄乱依赖项。

如果您刚刚更改了当前项目中的某些gem或升级了某些gem,也可能会发生这种情况。