已经激活的rake版本与Gemfile所需的版本不同,可以防止rake命令

这是我的错误:

rake aborted! Gem::LoadError: You have already activated rake 10.3.1, but your Gemfile requires rake 10.2.2. Prepending `bundle exec` to your command may solve this. /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:34:in `block in setup' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:19:in `setup' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler.rb:119:in `setup' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/setup.rb:7:in `' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `' LoadError: cannot load such file -- bundler/setup /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `' (See full trace by running task with --trace) 

我无法执行任何佣金任务,这似乎是我所有其他问题的根源。 几天前我运行rake命令时不是这样的。 任何人都可以解释这里发生了什么,以及如何让我的应用回到正轨? 我撞墙了。 另外, bundle exec并没有为我解决问题的根源。 我过去从来没有这样做过,现在还没有用。

编辑2:您应该查看bundle update并稍微更改您的工作流程。 请参阅此问题以获得进一步的帮助。


原始答案

这是一个简单的问题,当你的gemset的rake版本比你的Gemfile.lock提到的版本号更新时会发生。

正如错误消息中所提到的,您可以使用bundle exec来使事情正常工作。

我在这种情况下的解决方案就是删除Gemfile.lock如果我不太担心其他gem版本及其无限的依赖项。 否则,您可以尝试删除Gemfile.lock中的一行,其中讨论了rake的版本。 运行bundle install ,世界应该是一个快乐的地方。 ( 编辑2 :运行bundle update --source而不是此。不要这样做。)

PS:尝试使用gemsets并使用rvm为不同的项目组织你的gem 。

编辑

我更喜欢使用rbenv来管理安装,项目的所有gem都使用bundle install --path选项驻留在vendor/bundle 。 稍后使用bundle exec每个gem命令进行范围调整。

因此, rails s成为bundle exec rails s 。 在我看来,如果它意味着事情将保持清洁并且诸如此类之类的冲突不会发生,那么更多的打字就更好了。

你可以使用rubygems-bundler来解决这个问题。 运行以下命令:

$ gem install rubygems-bundler

$ gem regenerate_binstubs

然后再试一次你的佣金。

一个对我有用的简单解决方案是简单地运行bundle update rake

我有一个类似的问题,我对从我的Gemfile.lock删除一行感到怀疑,它看起来很hacky并且前缀bundle exec对每个rake命令的不便也不是一个选项。 我通过首先进入我的Gemfile.lock来解决这个Gemfile.lock ,看看有什么版本的rake (在我的例子中它是11.1.2)。 我的想法是卸载rake并安装此版本。 运行gem uninstall rake给出了这个输出:

选择要卸载的gem:

  1. 耙10.5.0
  2. 耙11.1.1
  3. 耙11.1.2
  4. 耙11.2.2
  5. 耙11.3.0
  6. 所有版本

我卸载了rake-11.2.2rake-11.3.0 。 这解决了我的问题

用这个:

 gem install rake -v "version-you-want" 

根据这个解决方案(对我有用): https : //stackoverflow.com/a/23668399/4260090

您可以使用rubygems-bundler解决它

在终端中键入以下命令:

 $ gem install rubygems-bundler $ gem regenerate_binstubs 

它现在应该工作

输入以下命令:

 bundle update rake 

我尝试了另一种方法,即删除Gemfile.lock然后运行bundle install 。 之后我运行rake db:migrate 。 一切正常。

虽然我不认为删除Gemfile.lock是不好的做法,但可能是; 谁知道。

如前面的答案中所提到的,这是一个简单的问题,当你的gemset的rake版本比你的Gemfile.lock提到的版本号更新时会发生。

调试它的最简单方法是运行bundle update

其他方法可能是删除Gemfile.lock并运行bundle install或只是删除Gemfile.lock中与rake版本对应的行并尝试bundle install 。 但这有时可能会破坏Gemfile。 我更喜欢第一种方法,因为它是最安全和最简单的方法。

进入Gemfile.lock ,找到rake文件并在那里更新版本。

我收到了这个错误:

Gem :: LoadError:你已经激活了rake 11.2.2,但你的Gemfile需要rake 11.1.2。 将bundle exec到您的命令可能会解决此问题。

我所做的是将Gemfile.lock的rake版本从rake (11.1.2)更改为rake (11.2.2)

之后一切都很好。

我有同样的错误:

你已经激活了rake 12.0.0,但是你的Gemfile需要rake 11.3.0。 将“bundle exec”添加到您的命令可能会解决此问题。

我通过运行bundle update解决了它

这更新了rake版本到我激活的rake版本,一切正常,我希望这对你有用!

我遇到了类似的问题。 我的解决方案是在文件Gemfile中更改rake版本“gem’rake’,’〜> 10.3’”的行,删除Gemfile.lock并运行’bundler install’,新的Gemfile.lock将显示新版本10.3.1。 那一切都会好的。