【问题标题】:Don't Understand Bundler Interaction with Gems不了解 Bundler 与 Gems 的交互
【发布时间】:2012-08-20 13:54:50
【问题描述】:

我以为我了解 Bundler 如何使用 gems,但在最近发生的事情之后,我不确定我是否正确。

我正在开发一个 Rails 应用程序。开始时(只是为了让我熟悉以前没有工作过的 Rails 环境),我没有使用 IDE。但是,因为我错过了 IDE 的一些优点,所以我才开始使用 RubyMine。作为 RubyMine 设置的一部分,它要求更新我现有项目的所有 gem。

在那之后,我无法运行“rake [anything]”。每次我这样做时,我都会收到以下错误:

你已经激活了 rake 0.9.3.beta.1,但是你的 Gemfile 需要 rake 0.9.2.2。使用 bundle exec 可以解决这个问题。

我可以更新到 rake 的下一个版本 - 这不是问题 - 但我不明白首先发生了什么。我“激活”了更新版本的 rake 发生了什么。最终,我最终解决了这个问题

gem 'rake', '0.9.3.beta.1'

在我的 Gemfile 中并运行

bundle update rake

但是,我仍然不确定这里发生了什么。如果我之前用的是 9.2.2,为什么突然就这么炸了,以后怎么防止呢?

【问题讨论】:

    标签: ruby-on-rails gem rake bundler rubymine


    【解决方案1】:

    如果您使用的是 Rubymine,则应将其配置为使用 bundle exec 运行 rake 任务。

    转到: 运行 -> 编辑配置 -> 默认值 -> Rake -> Bundler 选项卡 并选中“在包的上下文中运行脚本(bundle exec)”

    删除所有已创建的任务,下次您再次创建它们时将应用默认设置。您还可以单独配置创建的每个任务。

    【讨论】:

      【解决方案2】:

      您真的应该考虑安装和使用 RVMRbenv 来管理您的 ruby​​ 版本和 gemset。如果您采用 Rbenv 方式,则可以使用 rbenv-gemset 插件来管理 gemset,类似于 RVM 原生的方式。

      您已经激活了 rake 0.9.3.beta.1,但您的 Gemfile 需要 rake 0.9.2.2。使用 bundle exec 可以解决这个问题。

      在您最后一次执行bundle 和安装/配置/运行RubyMine 之间的某个时间点,您必须安装rake 0.9.3.beta.1。因为您不是通过像 RVM 或 Rbenv 这样的 gemset 来管理您的 gem,所以 Rake 的默认版本变成了 0.9.3.beta.1,而不是捆绑程序安装的版本 0.9.2.2

      上述错误表明您的Gemfile 有类似的东西

      gem 'rake', '0.9.2.2'
      

      它不允许使用的 rake 版本是 0.9.2.2 以外的任何版本。

      如果您的系统上除了0.9.3.beta.1 之外实际上还有0.9.2.2 并且您的Gemfile 配置为0.9.2.2,而不是运行

      rake some:task
      

      你可以跑

      bundle exec rake some:task
      

      bundler 将通过 0.9.2.2 版本的 rake 运行 some:task。无论使用 RVM 还是 Rbenv,通过捆绑器使用 bundle exec ... 运行与在 Gemfile 中找到的 gem 相关的任务都被认为是一种好习惯。

      你可以阅读bundle exec here

      【讨论】:

      • 我会研究 RVM。但是...询问您的回复...我认为我的 Gemfile 中有那行 - 但它没有。这就是让我困惑的地方。 (但是......我的 Gemfile.lock 里面有 =0.9.2.2 - 我只是不知道它是怎么到那里的。)
      • 如果它在Gemfile.lock 中并且没有在您的Gemfile 中明确设置,则它被指定为您的@987654345 中 的众多宝石之一的依赖项@.
      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多