【问题标题】:rake aborted! You have already activated rake 10.0.2, but your Gemfile requires rake 0.9.2.2耙中止!您已经激活了 rake 10.0.2,但您的 Gemfile 需要 rake 0.9.2.2
【发布时间】:2012-11-21 09:22:18
【问题描述】:

我正在尝试执行“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)

【问题讨论】:

标签: ruby-on-rails rake


【解决方案1】:

试试这个bundle exec rake db:migrate

移除 rake 10.0.2 gem

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

然后试试rake db:migrate

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

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

【讨论】:

  • 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: Insecure world writable dir /usr in PATH, mode 040777 /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 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: warning: Insecure world writable dir /usr in PATH, mode 040777 Andy:academyair Andy$
  • 检查您的表,该表可能在迁移之前运行,或者迁移在您的 db 文件夹中的迁移文件中没有表,同时检查它
  • 这行得通,但我必须在之后运行 bundle install ,然后它就被修复了。就我而言,这被破坏的原因是我有两个项目与 rvm 共享同一个 gemset。 rake 版本不同。答案是使用不同的 gemset。
  • 谢谢,经过大量搜索终于解决了我的问题。
【解决方案2】:

对我来说,我刚刚运行了bundle update,一切都恢复正常了。

【讨论】:

  • 但这也会更新其他 gem,因此解决此问题的方法是将 Gemfile.lock 中的 rake 版本从 0.9.2.2 更改为 10.0.1,然后运行 ​​bundle 命令。
【解决方案3】:

我可以通过打开 Gemfile 并将 gem 'rake', '~&gt; 0.9.2.2' 更改为 gem 'rake', '~&gt; 10.0.1' 来解决这个问题

【讨论】:

    【解决方案4】:

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

    gem 'rake', '~> 10.0.1'
    

    然后运行

    $ bundle update rake
    

    那就试试

    【讨论】:

    • 你应该先删除你的 Gemfile.lock 文件并再次捆绑安装,然后使用 rake db:migrate
    【解决方案5】:

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

    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。我的 gem 中只有 10.0.1 版本。

    【讨论】:

      【解决方案6】:

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

      bundle update
      

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

      如果您使用 gemset:请务必在更新 rake 后运行 bundle install 以更新您的本地 gemset。

      【讨论】:

        【解决方案7】:

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

        bundle exec rake db:migrate
        

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

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

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

        be rake db:migrate
        

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 2011-08-30
            • 1970-01-01
            • 2014-06-10
            • 2011-11-26
            • 2011-10-27
            • 2023-03-07
            • 1970-01-01
            • 1970-01-01
            • 2017-08-29
            相关资源
            最近更新 更多