2

我以为我了解 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,为什么它会突然像那样爆炸,我以后如何防止这种情况发生?

4

2 回答 2

5

如果您使用的是 Rubymine,则应将其配置为使用bundle exec.

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

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

于 2012-12-12T12:31:30.177 回答
0

你真的应该考虑安装和使用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 这样的 gemsets 来管理你的 gems,所以 Rake 的默认版本变成0.9.3.beta.1了而不是 bundler 安装的版本,0.9.2.2.

上面的错误表明你Gemfile有类似的东西

gem 'rake', '0.9.2.2'

这不允许使用 rake 的版本除了0.9.2.2.

如果您确实在0.9.2.2您的系统上除了0.9.3.beta.1并且您Gemfile的配置为0.9.2.2,而不是运行

rake some:task

你可以跑

bundle exec rake some:task

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

你可以在bundle exec 这里阅读。

于 2012-08-25T04:35:25.673 回答