Глобальный доступ к методам Rake DSL устарел - PullRequest
86 голосов
/ 01 июня 2011

Я работаю с учебником по 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.

Как я могу решить эту проблему?

Ответы [ 5 ]

111 голосов
/ 11 июня 2011

Добавление include Rake::DSL в Rakefile до вызова приложений load_tasks также работает для меня.

Так что в приведенном выше случае пользователя до DemoApp::Application.load_tasks в Rakefile.

64 голосов
/ 01 июня 2011

Я нашел это в вопросе переполнения стека Проблемы с 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, выполнив следующую команду:

gem uninstall rake -v=0.9.1

Если у вас установлено несколько версий гема, вам будет предложено выбрать версию.

После очистки 0.9.1 я запустил

bundle update rake

и наконец смог создать файлы моей базы данных. Я использовал rake db:create, но он должен работать и для rake db:migrate.

Надеюсь, это поможет.

5 голосов
/ 30 июня 2011

У меня была такая же проблема в Windows с установщиком. Ruby 1.9.2 и Rails 3.0.9. Вот что я сделал:

bundle update rake
bundle show 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

Как отмечено в комментарии, убедитесь, что название вашего приложения указано правильно в двух соответствующих строках выше.

0 голосов
/ 16 декабря 2011

bundle exec rake db: миграция решит проблемы с вашей версией ruby ​​

0 голосов
/ 17 сентября 2011

Если вы видите это в более поздних версиях Rails (например, 3. +), вы также можете проверить, что ваша среда чиста, используя RVM http://beginrescueend.com/ и создавая специальный ruby ​​& gemset для ваших проектов.

Используйте файл .rvmrc для каждого отдельного проекта, это гарантирует, что вы не получите старые системные гемы в свои проекты.Который укусил меня раньше.

Это предотвращает необходимость возиться с сгенерированными Rake-файлами и тому подобным.

...