Rake 0.9でWARNINGが出るときの対処法

rake 0.9をインストールした状態で、Railsで何気なくrakeコマンドを打つと次のようなメッセージが出てくる。

% rake db:migrate
WARNING: Global access to Rake DSL methods is deprecated.  Please Include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Hoge::Application#task called at /Users/uiureo/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'

rakeするたびにWARNINGが表示されるのは気分がよくない。

Railsの作者のDHHはTwitterでこう発言している。

Rake 0.9はRailsと相性が良くないから、修正されるまではrake 0.8.7を使おうということだ。
rake 0.8.7をRailsで使うようにするには次のようにすればいい。

対処法

まず、rake 0.9.1をアンインストールするコマンドを実行する。

gem uninstall rake -v=0.9.1

RailsのGemfileに次のように書き加える。

gem 'rake', '0.8.7'

最後に、rakeのバージョンを更新するコマンドを実行。

bundle update rake

これでWARNINGが出なくなりました。めでたしめでたし。