不了解 Bundler 与 Gems 的交互

Jas*_*Cav 2 rake gem ruby-on-rails rubymine bundler

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

我正在开发一个 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'
Run Code Online (Sandbox Code Playgroud)

在我的 Gemfile 中运行

bundle update rake
Run Code Online (Sandbox Code Playgroud)

但是,我仍然不确定这里发生了什么。如果我之前使用的是 9.2.2,为什么它会突然像那样爆炸,我将来如何防止这种情况发生?

Fab*_*mos 5

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

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

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