Глобальный доступ к методам 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/[email protected]/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'

Я не уверен, что с этим делать или как с этим работать. Я не знаю других команд для Rake.

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

86 голосов | спросил chell 1 J0000006Europe/Moscow 2011, 13:52:14

5 ответов


0

Я нашел это в вопросе переполнения стека Проблемы с 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 также.

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

ответил Brian Bruijn 1 J0000006Europe/Moscow 2011, 14:45:41
0

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

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

ответил Patelify 11 J0000006Europe/Moscow 2011, 04:05:01
0

У меня была такая же проблема в 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

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

ответил LikeMaBell 30 J0000006Europe/Moscow 2011, 19:29:05
0

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

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

Это предотвращает необходимость возиться с созданными Rakefiles & например.

ответил Jim Munro 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 17 Sep 2011 16:10:18 +0400 2011, 16:10:18
0

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

ответил Galuga 16 FriEurope/Moscow2011-12-16T09:46:35+04:00Europe/Moscow12bEurope/MoscowFri, 16 Dec 2011 09:46:35 +0400 2011, 09:46:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132