1. ホーム
  2. ruby-on-rails-3

[解決済み] Rake DSLメソッドへのグローバルアクセスは廃止されました。

2023-06-02 04:22:31

質問

Ruby on Rails 3 のチュートリアルブックで作業しており、コマンドラインに次のように入力しました。

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 DemoApp::Application#task called at /Users/imac/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'

どうしたらいいのか、どう作業したらいいのか、よくわかりません。Rakeの他のコマンドを知りません。

どうしたらこの問題を解決できますか?

どのように解決するのですか?

私はStack Overflowの質問でこれを見つけた Ruby on RailsとRakeの問題: 初期化されていない定数Rake::DSL . これは@DHHのツイートを参照しています。

Gemfileに以下を記述します。

gem "rake", "0.8.7"

のようなものが表示されるかもしれません。

rake aborted!
You have already activated Rake 0.9.1 ...

Rake 0.9.1のコピーがまだディレクトリに残っていたので削除しました。

以下のコマンドを実行することで、Rake 0.9.1 を "delete" することができます。

gem uninstall rake -v=0.9.1

複数のバージョンのgemがインストールされている場合、バージョンを選択するプロンプトが表示されます。

0.9.1が一掃された後、私は以下を実行しました。

bundle update rake

で、ようやくデータベースファイルを作成することができました。私は rake db:create を使っていましたが、これは rake db:migrate にも使えるはずです。

お役に立てれば幸いです。