2011-11-18 105 views
6

我最近安裝了Rails 3.1,現在我的舊Rails 3.0應用程序不會rake db:migrate。這是當我嘗試運行bundle exec rake db:migrate時發生的情況。我在Ubuntu沒有RVMbundle exec rake db:migrate cause「找不到可執行的rake」錯誤

/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/shared_helpers.rb:142:in `block in cripple_rubygems': can't find executable rake (Gem::Exception) 
    from /usr/local/lib/ruby/gems/1.9.1/bin/rake:19:in `<main>' 

當我跑得rake db:migrate,它輸出:

rake aborted! 
You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.8.7. Consider using bundle exec. 

(See full trace by running task with --trace) 

其耙

/usr/local/bin/rake 

回答

10

將這個在你的Gemfile:

gem 'rake' , '>= 0.9.2' 

並運行bundle update


你需要給在你運行這個什麼環境的詳情:

  • 哪個操作系統?
  • 您使用的是RVM嗎?
  • 這是一個全新的RVM設置的機會嗎?

1)嘗試運行此:

gem list | rake 

你得到了什麼輸出?

2)如果你沒有看到在輸出rake,那麼這樣做:

gem install rake 

,然後嘗試再次rake db:migrate

3)如果你看到耙,但它仍然不工作,然後這樣做:

which rake 

你會得到什麼輸出?它應該看起來像這樣:

~/.rvm/gems/ruby-1.9.2-p0/bin/rake 
+0

我在Ubuntu上沒有RVM –

+0

gem list | rake輸出: 您已經激活了rake 0.9.2.2,但您的Gemfile需要rake 0.8.7。考慮使用bundle exec。 –

+0

好吧,那很簡單!較早的Rake版本與Rails 3.1.1不兼容 - 您需要增加Gemfile中rake的版本號!把它放在你的Gemfile中:'gem'rake','> = 0.9.2',並做一個'bundle update' ' – Tilo