web-dev-qa-db-ja.com

Rake DSLメソッドへのグローバルアクセスは廃止されました

私は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の他のコマンドは知りません。

この問題を修正するにはどうすればよいですか?

86
chell

これはStack Overflowの質問Ruby on Rails and Rake issues:uninitialized constant 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を「削除」できます。

gem uninstall rake -v=0.9.1

Gemの複数のバージョンがインストールされている場合、バージョンを選択するよう求められます。

0.9.1が一掃された後、私は走りました

bundle update rake

そして最終的に私のデータベースファイルを作成することができました。 rake db:createを使用していましたが、rake db:migrateでも機能するはずです。

役に立てば幸いです。

64
Brian Bruijn

アプリケーションload_tasksが呼び出される前にinclude Rake::DSLをRakefileに追加することもうまくいきました。

したがって、上記のユーザーの場合、RakefileのDemoApp::Application.load_tasksの前に。

111
Patelify

Windowsでもインストーラーで同じ問題が発生していました。 Ruby 1.9.2 and Rails 3.0.9。ここで私がしたことは:

bundle update rake
bundle show rake

その後、rake 0.9.2を実行していました。

次に、次のようにアプリケーションルートフォルダーのRakefileを更新しました。

require File.expand_path('../config/application', __FILE__)
require 'rake'
# If you named your application something other than SampleApp, change that below
module ::SampleApp
    class Application
        include Rake::DSL
    end
end

module ::RakeFileUtils
    extend Rake::FileUtilsExt
end

SampleApp::Application.load_tasks

コメントに記載されているように、上の2つの適切な行でアプリの名前が正しいことを確認してください。

5
LikeMaBell

bundle exec rake db:migrateは、Rubyバージョンの問題を解決します

0
Galuga

Rails(3. +など)の以降のバージョンでこれを見ている場合は、RVM http://beginrescueend.comを使用して環境がクリーンであることを確認することもできます。 / と特定のRuby&gemsetを作成します。

プロジェクトごとに.rvmrcファイルを使用します。これにより、プロジェクトに古いシステムgemが含まれないことが保証されます。それは私を前に噛みました。

これにより、生成されたRakefilesなどを操作する必要がなくなります。

0
Jim Munro