27

我正在尝试执行“rake db:migrate”,它给了我这个错误。

Andy:AcademyAir Andy$ rake db:migrate
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
rake aborted!
You have already activated rake 10.0.2, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:31:in `block in setup'
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:17:in `setup'
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler.rb:116:in `setup'
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/setup.rb:7:in `<top (required)>'
/Users/Andy/Desktop/AcademyAir/config/boot.rb:6:in `<top (required)>'
/Users/Andy/Desktop/AcademyAir/config/application.rb:1:in `<top (required)>'
/Users/Andy/Desktop/AcademyAir/Rakefile:5:in `<top (required)>'
(See full trace by running task with --trace)
4

8 回答 8

49

试试这个bundle exec rake db:migrate

移除 rake 10.0.2 宝石

通过使用gem uninstall rake和删除10.0.2rake gem 的版本

然后尝试rake db:migrate

为什么会出现错误:在您的 gem 中列出了 rake gem install 的两个版本(10.0.2 和 0.9.2.2),以便出现此错误。*

另一个解决方案是你可以做bundle update

于 2012-11-21T09:25:28.297 回答
42

对我来说,我只是跑了bundle update,一切都恢复正常了。

于 2012-11-26T15:17:35.960 回答
6

我能够通过打开 Gemfile 并更改为来解决这个gem 'rake', '~> 0.9.2.2'问题gem 'rake', '~> 10.0.1'

于 2012-11-23T19:33:19.110 回答
4

在您的Gemfile中,通过以下方式明确设置最新的 rake 版本:

gem 'rake', '~> 10.0.1'

然后运行

$ bundle update rake

然后尝试

于 2012-11-27T07:16:17.877 回答
3

我刚刚遇到了同样的问题。

  1. 我插入了我的 gemfilen gem 'rake', '~> 10.0.1' [在你的情况下应该是 '10.0.2']
  2. 我删除了我的 gemfile 锁
  3. 我再次运行 rake db:migration 并且它起作用了。

我在这里得到了这个提示:Activated Ruby RAKE 10.0.1, require 10.0.0

更新:就我而言,我没有重复 rake。我的宝石中只有 10.0.1 版本。

于 2012-11-22T12:50:18.530 回答
2

通过运行解决了同样的问题:

bundle update

这会将您的 rake gem 更新到最新版本并允许您运行迁移。

如果您使用的是 gemset:请确保bundle install在更新 rake 以更新本地 gemset 之后运行。

于 2012-12-13T18:39:31.623 回答
1

发生这种情况是因为您正在使用系统中的rake。(默认为最新版本)解决方案是使用以下命令:

bundle exec rake db:migrate

此外,您可以创建别名。因为这个命令太大,很难写。

echo "alias be='bundle exec'" >> ~/.bash_profile
source ~/.bash_profile

然后你可以使用以下短命令:

be rake db:migrate
于 2012-12-18T16:16:30.243 回答
0

将 gemfile 和 gemlock 中的版本更改为控制台中显示的版本号,它将完成

于 2012-12-04T09:29:24.320 回答