Pracuję nad poradnikiem Ruby on Rails 3 i wpisałem w wierszu poleceń:
rake db:migrate
co spowodowało następujące ostrzeżenie.
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'
Nie wiem, co z tym zrobić ani jak z tym pracować. Nie znam innego polecenia dla Rake.
Jak mogę rozwiązać ten problem?
gem uninstall rake -v=0.9.1
. Mój błąd, że nie wyjaśniłem tego jasno. Dzięki za wyjaśnienie Antonio! Pozdrawiam, BrianDodanie
include Rake::DSL
do Rakefile przed wywołaniem aplikacji load_tasks również zadziałało.Tak więc w powyższym przypadku użytkownika przed
DemoApp::Application.load_tasks
w pliku Rakefile.źródło
Miałem ten sam problem w systemie Windows z instalatorem. Ruby 1.9.2 i Rails 3.0.9. Oto co zrobiłem:
Po wykonaniu tej czynności korzystałem z prowizji 0.9.2.
Następnie zaktualizowałem Rakefile w głównym folderze aplikacji w następujący sposób:
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
Jak wspomniano w komentarzu, upewnij się, że nazwa Twojej aplikacji jest poprawna w dwóch odpowiednich wierszach powyżej.
źródło
heroku rake db:migrate
polecenie zadziałało, musiałem również dodaćrequire 'rake/dsl_definition'
do pliku rakefile (powyżej wymaganej linii „rake”).Jeśli widzisz to w późniejszych wersjach Railsów (np. 3. +), możesz również chcieć sprawdzić, czy twoje środowisko jest czyste, używając RVM http://beginrescueend.com/ i tworząc specyficzny ruby & gemset dla swoich projektów.
Używaj pliku .rvmrc dla każdego projektu, to zagwarantuje, że nie dostaniesz starszych klejnotów systemowych do swoich projektów. Który wcześniej mnie ugryzł.
Zapobiega to konieczności małpowania z wygenerowanymi plikami Rakefile itp.
źródło
bundle exec rake db: migrate rozwiąże problemy z wersją Ruby
źródło