Globalny dostęp do metod Rake DSL jest przestarzały
Pracuję nad podręcznikiem Ruby on Rails 3 i wpisałem w wierszu poleceń:
rake db:migrate
Który wydał 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 żadnej innej komendy dla Rake ' a.
Jak mogę rozwiązać ten problem?
5 answers
Znalazłem to w pytaniu Stack OverflowRuby on Rails i problemy z Rake:: DSL. Odnosi się do tweeta @ DHH.
Umieść następujące w swoim Gemfile
gem "rake", "0.8.7"
Możesz zobaczyć coś w rodzaju
rake aborted!
You have already activated Rake 0.9.1 ...
Nadal miałem kopię Rake 0.9.1 w moim katalogu, więc go usunąłem.
Możesz" usunąć " Rake 0.9.1, uruchamiając następujące polecenie:
gem uninstall rake -v=0.9.1
Jeśli masz zainstalowanych kilka wersji gem, będziesz poproszony o wybranie wersji.
Po wyczyszczeniu 0.9.1 uruchomiłem
bundle update rake
I w końcu udało się stworzyć pliki mojej bazy danych. Używałem rake db:create
, ale powinno działać również dla rake db:migrate
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:34:01
Dodanie include Rake::DSL
do Rakefile przed wywołaniem aplikacji load_tasks również zadziałało.
Tak w powyższym przypadku użytkownika przed DemoApp::Application.load_tasks
w pliku Rakefile.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-24 20:33:31
Miałem ten sam problem na Windows z instalatorem. Ruby 1.9.2 i Rails 3.0.9. Oto co zrobiłem:
bundle update rake
bundle show rake
Po wykonaniu tego miałem rake 0.9.2.
Następnie zaktualizowałem plik Rakefile w folderze głównym 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 aplikacji jest poprawna w dwóch odpowiednich liniach powyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 15:29:05
Jeśli widzisz to na późniejszych wersjach Rails (np.+ ) możesz również sprawdzić, czy twoje środowisko jest czyste, używając RVM http://beginrescueend.com / i tworzenie konkretnego ruby & gemset dla Twoich projektów.
Użyj an .plik rvmrc na podstawie projektu, to gwarantuje, że nie są coraz starszych klejnotów systemowych w swoich projektach. Który już mnie ugryzł.
Zapobiega to konieczności małpowania wokół generowanych plików RAKEFILE & takich.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-17 12:10:18
Bundle Exec Rake db:migrate rozwiąże Twoje problemy z wersją ruby
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 05:46:35