【问题标题】:How to delete a gem so that I don't need to prepend bundle exec for rails commands?如何删除 gem,这样我就不需要为 rails 命令添加 bundle exec 了?
【发布时间】:2014-07-21 19:23:59
【问题描述】:

如果我尝试运行测试,我会得到 ​​p>

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    您可以通过运行删除 gem(或特定版本的 gem)

    gem uninstall <gem_name>
    

    如果有多个版本,则提示将询问要删除哪个版本。

    【讨论】:

      【解决方案2】:

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

      gem uninstall jruby-openssl -v 0.9.5 
      

      【讨论】:

        【解决方案3】:

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

        例如,我的 .bashrc 中有这个

        function bake {
          bundle exec rake "$@"
        }
        

        所以现在我可以输入bake whatever,运行的命令是bundle exec rake whatever

        【讨论】:

          【解决方案4】:

          当您将全局 gemset 用于不同的项目时,通常会发生这种情况。

          隔离 gemset 的一个好方法是使用 rvm。安装后,您可以为每个项目创建一个名为 .ruby-version 的文件,并在其上使用一行来标识 gemset,语法为 &lt;ruby version&gt;@&lt;your project&gt;。从控制台:

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

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

          【讨论】:

          • 如果您刚刚在当前项目中更改了一些 gem 或升级了一些 gem,也可能发生这种情况。
          猜你喜欢
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          • 2014-09-29
          • 2012-05-04
          • 1970-01-01
          • 2020-01-04
          • 1970-01-01
          • 2011-12-27
          相关资源
          最近更新 更多