【问题标题】:Multiple Rails vers on same machine + rake同一台机器上的多个 Rails 版本 + rake
【发布时间】:2017-10-17 15:18:51
【问题描述】:

我已经使用 Ruby 1.9.3 运行 Rails 3.2 有一段时间了。最近我添加了 Rails 5.1 和 Ruby 2.4。

我使用 rvm 安装 Ruby2.4。

今天我有机会 cd 进入我的一个旧项目并运行 rake db:migrate,我收到以下消息:

Gem::LoadError: You have already activated rake 12.0.0, but your Gemfile requires rake 0.9.2.2. Prepending `bundle exec` to your command may solve this.

添加“bundle exec”确实解决了问题,但据我所知,我想了解发生了什么。我认为项目中 Gem 文件的全部意义在于锁定所需的 gem。

所以我的机器上的某个地方显然仍然存在 rake 0.9.2.2,但为什么我的命令 'rake db:migrate' 没有自动使用它?

【问题讨论】:

  • 疯狂的是,我只是查看了我的 gemfile,但它在任何地方都没有提到 rake。这更令人困惑。

标签: ruby-on-rails rubygems rake


【解决方案1】:

原因:某些 gem 可能已将 rake gem 锁定到该版本。您得到这个是因为 gemlock 文件中的 rake 版本与您已经安装的不同。

解决方案 1:

bundle update

解决方案 2:

编辑 gemlock 文件。打开 Gemfile.lock 并更改

rake (0.9.2.2) to rake (12.0.0)

解决方案3

删除 Gemfile.lock 并再次运行 bundle install。这将创建 再次打开 Gemfile.lock。

【讨论】:

  • 感谢 krishnar,我是否在项目目录中执行此操作?
  • 非常感谢您的详细回答。我明天试试这个。
  • 我运行了 bundle update,现在它安装了 rake 12.1.0,它抱怨我激活了 rake 12.0.0。我的问题仍然是为什么当我运行 rake 时它不使用该项目 gems 中已有的内容?感谢您的帮助。
  • @nexar 检查其他解决方案
  • 我做了Solution3,现在它工作正常。但是我仍然想了解为什么当我运行 rake 时它不使用该项目 gems 中已有的内容?感谢您的帮助。
最近更新 更多