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?

Author: Peter Mortensen, 2011-06-01

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.

Mam nadzieję, że to pomoże.
 64
Author: Brian Bruijn,
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.

 111
Author: Patelify,
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.

 5
Author: LikeMaBell,
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.

 0
Author: Jim Munro,
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

 0
Author: Galuga,
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