Ruby on rails 雷克流产了!您已经激活了rake 10.0.2,但您的Gemfile需要rake 0.9.2.2

Ruby on rails 雷克流产了!您已经激活了rake 10.0.2,但您的Gemfile需要rake 0.9.2.2,ruby-on-rails,rake,Ruby On Rails,Rake,我正在尝试执行“rakedb: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

我正在尝试执行“rakedb: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)
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:警告:路径中的不安全世界可写目录/usr,模式040777
雷克流产了!
您已经激活了rake 10.0.2,但您的文件需要rake 0.9.2.2。使用bundle exec可以解决这个问题。
/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:31:在“设置中的块”中
/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`'
/Users/Andy/Desktop/AcademyAir/config/boot.rb:6:in`'
/Users/Andy/Desktop/AcademyAir/config/application.rb:1:in`'
/Users/Andy/Desktop/AcademyAir/Rakefile:5:in`'
(通过使用--trace运行任务查看完整跟踪)

试试这个
bundle exec rake db:migrate

移除rake 10.0.2 gem

使用
gem卸载rake
并删除rake-gem的
10.0.2
版本

然后尝试
rake db:migrate

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


另一个解决方案是您可以执行
捆绑更新

我刚刚遇到了同样的问题

  • 我在gemfilen gem的“rake”中插入了“~>10.0.1”[在您的示例中,它应该是“10.0.2”]
  • 我删除了我的文件锁
  • 我再次运行了rakedb:migration,它成功了
  • 我在这里得到了一个提示:


    更新:就我而言,我没有复制rake。我的gems中只有10.0.1版本。

    我能够通过打开Gemfile并将
    gem'rake'、'~>0.9.2.2'
    更改为
    gem'rake'、'~>10.0.1'
    来解决这个问题。对于我来说,我只是运行了
    bundle update
    ,一切又正常了。

    在你的
    Gemfile
    中,通过以下方式显式设置最新的rake版本:

    gem 'rake', '~> 10.0.1'
    
    然后跑

    $ bundle update rake
    

    然后尝试

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

    通过运行解决相同问题:

    bundle update
    
    这将把rakegem更新到最新版本,并允许您运行迁移


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

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

    bundle exec rake db:migrate
    
    此外,还可以创建别名。因为这个命令太大,很难写

    echo "alias be='bundle exec'" >> ~/.bash_profile
    source ~/.bash_profile
    
    然后可以使用以下短命令:

    be rake db:migrate
    

    bundle exec rake db:migrate/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:197:warning:unsecure world writable dir/usr in PATH,mode 040777/Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2/lib/bundler/runtime.rb:197:warning:unsecure:unsecure:world writable dir/usr in PATH,模式040777
    现在,当我尝试rake db:migarte时,它什么也不做<代码>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:警告:路径中的世界可写目录/usr不安全,模式040777 Andy:academyair Andy$
    检查您的表,可能是迁移之前运行的表,也可能是迁移在db文件夹中的迁移文件中没有表检查这两个都正常工作,但我必须在之后运行bundle安装,然后它被修复。在我的例子中,这被破坏的原因是我有两个项目与rvm共享同一个gemest。rake版本是不同的。使用不同的宝石是答案。谢谢,在搜索了很多之后,终于解决了我的问题。请查看[链接][1]。它可以解决这个问题。[1] :您应该首先删除Gemfile.lock文件并重新安装捆绑包,然后使用rake db:migrateb,但这也会更新其他gems,因此解决方法是将Gemfile.lock中的rake版本从0.9.2.2更改为10.0.1,然后运行bundle命令。