Ruby on Rails i problemy z Rake:: DSL

Mam naprawdę frustrujący problem: Rake jest głupi.

Oto jak powstaje problem:

$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Oba działają dobrze, ale kiedy to zrobię,]}
$ rake db:migrate

Otrzymuję następujący błąd.

(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'

Szukałem w Internecie podobnych / tych samych błędów i ludzie je mieli. Po prostu nikt nigdy nie rozwiązuje problemu!

Jak rozwiązać ten problem?
Author: Andrew Marshall, 2011-05-22

19 answers

A tweet z DHH wcześniej. Grabie .9.0 łamie Szyny i kilka innych rzeczy, musisz:

gem "rake", "0.8.7"

W Twoim Gemfile.

 193
Author: Caley Woods,
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-05-22 04:11:11

Zrobiłem kilka badań tuż po mojej poprzedniej odpowiedzi (przepraszam, muszę zrobić przed nią).

Wszystkie problemy są rozwiązywane z Rake gem 0.9.2.. Wykonałem te kroki:

  • zainstalowałem gem install rake -v=0.9.2 (miałem gem 0.9.1)
  • usunięto 0.9.1 z gem uninstall rake -v=0.9.1
  • updated with bundle update
  • Następnie db:migrate pokazał Ostrzeżenie, WARNING: Global access to Rake DSL methods is deprecated. Please....

    Został rozwiązany przez dodanie następującego pliku do pliku Rake.

    module ::YourApplicationName  
      class Application
        include Rake::DSL
      end
    end
    
  • I ommited the module ::RakeFileUtils extend Rake::FileUtilsExtend option sugested by @databyte.

Oznacza to, że Grabie Gem 0.9.2 działa dobrze!

 72
Author: Arrumaco,
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-07-30 14:31:44

Przechodząc przez Rozdział 2 Railstutorial (demo_app) i napotkał ten problem. Próbowałem wszystkich innych odpowiedzi wymienionych tutaj, ale nie mogłem go uruchomić, dopóki nie zrobiłem tego: {]}

Umieść to w swoim Rakefile powyżej wymagaj 'rake':

require 'rake/dsl_definition'

Via Jak naprawić niezainicjalizowany stały problem Rake::DSL na Heroku?

Zarekomendowałem i wrzuciłem wszystkie pliki na Github i Heroku.

 54
Author: djblue2009,
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 11:46:12

Wystarczyło użyć:

gem install rake

Miałem już wersję 0.9.2, po prostu potrzebowałem instalacji.

 25
Author: Branstar,
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-07-04 23:14:00

Ponownie zainstaluj klejnot rake i topowinno działać dobrze:

gem uninstall rake -v=0.9.2 
gem install rake -v=0.9.2

Jeśli nie, podaj wersję' 0.8.7 ' w pliku Gemfile.

 19
Author: hohner,
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-11 19:38:58

Jeśli nie używasz Bundlera:

sudo gem install rake -v 0.8.7
sudo gem uninstall rake

Następnie wybierz odinstalowanie 0.9.0.

 10
Author: Travis Reeder,
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-05-23 08:17:31

Jeśli tak jak ja utknąłeś na rake 0.8.7, a używasz Rails 3.2.x następnie railties dodaje wymóg dla Rake:: DSL

Aby to rozwiązać, na górze Rakefile powinieneś dodać:

module Rake
  module DSL
  end
end
 8
Author: Jonathon Horsman,
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
2012-05-18 17:28:34

Rozwiązałem ten sam problem w następujących krokach:

W Gemfile:

gem 'rake', '0.9.2'

Następnie uruchom to na konsoli:

sudo bundle update rake

Następnie dodano następujące linie do Rakefile:

require 'rake/dsl_definition'
include Rake::DSL
 7
Author: Gaurav Gupta,
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-08-10 05:13:37

Rails 3.1.rc1 został zaktualizowany. Dla własnych plików RAKEFILE, możesz dodać to przed wywołaniem do load_tasks.

module ::YourApplicationName
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

Https://gist.github.com/4cd2bbe68f98f2f0249f

UPDATE: zauwazylem, ze juz tu odpowiedzialem: Undefined method 'task' using Rake 0.9.0

 6
Author: databyte,
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 12:25:02

Miałem ten sam problem i musiałem użyć rake 0.8.7 gem zamiast 0.9.0.

 4
Author: Paul,
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-05-22 04:04:15

Jestem użytkownikiem Windows XP i miałem ten sam problem.

Wpisałem gem "rake", "0.8.7" do pliku gemfile, a następnie wpisałem następujące z okna poleceń.

bundle update rake
To naprawiło mój problem.
 4
Author: Mr. Beginner,
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-07-30 14:37:09
  1. przejdź do ścieżki projektu
  2. Typ bundle install --path=vendor/bundle
  3. Typ bundle exec rake db:migrate

Aby uruchomić typ serwera bundle exec rails s. Użyj bundle exec i będziesz pewien, że używasz odpowiednich klejnotów (wymagana wersja) dla swojego projektu. Polecam również dodanie vendor/bundle do .gitignore, Jeśli używasz git i tworzysz alias dla bundle exec. Jeśli używasz zsh możesz zastosować to podejście

 4
Author: ka8725,
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
2012-02-15 14:11:20

To samo co Branstar powyżej - dzięki Branstar!

  • OS: Windows Vista
  • Poziom: zupełnie nowy w Ruby on Rails
  • miałem już zainstalowany Ruby 1.9.2

Postępowałem zgodnie z instrukcjami w uruchamianie Rails 3 Na Windows.

Wszystko działało aż do części "rake db: migrate", która dała mi takie same wyniki jak oryginalny post.

Uciekłem:

gem install rake

Znowu uciekłem:

rake db:migrate

Potem udało mi się uruchomić Ruby on Rails serwer i miał wszystko na swoim miejscu.

Jeszcze raz dzięki Branstar : -)

 3
Author: zimini,
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-07-30 14:39:28

I feel for you (mikhailvs), it ' s really frustring. Od prawie jednego dnia szaleję. Nawet odinstalowałem Ruby i wszystkie jego zależne pliki i wyłączyłem mój komputer, ale nadal mam ten sam problem.

To, co dostałem z komunikatu o błędzie, to problem z Rake 0.9.2. Wygląda na to, że nie był w pełni zainstalowany. Więc musiałem ponownie zainstalować gem install rake -v=0.9.2

Nie byłem pewien, czy mam rake-v0.9. 1 zainstalowany. Aby upewnić się, że jestem bezpieczny, próbowałem usunąć starą wersję za pomocą gem uninstall rake -v=0.9.1. Ale jest Wyświetlono mi komunikat o błędzie

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d rake`

OK, więc sprawdziłem wszystkie katalogi Rake na moim komputerze i okazało się, że mam tylko Rake 0.9.2. Następnie, aby sprawdzić, czy wszystko poszło dobrze, przeniosłem się z rake db:migrate. I zadziałało:)

Myślę, że nie miałem Rake 0.9.1, ponieważ wyczyściłem zainstalowany Ruby (rubyinstaller-1.9.2-p180 - na moim systemie Windows 7) i wszystkie perełki, jak również. W międzyczasie Rake 0.9.2 nie był w pełni zainstalowany.

 2
Author: egyamado,
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-07-30 14:42:32

Odinstalowanie za pomocą "gem uninstall rake" działało u mnie, miałem zainstalowane 2 wersje, więc zrobiłem czystą reinstalację.

"rake db: create" , aby upewnić się, że baza danych istnieje a następnie "rake db: migrate", aby przypieczętować transakcję.

 2
Author: Christopher,
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-25 22:50:51

Miałem ten sam problem używając Rake 0.9.2.2. Rozwiązałem ten problem używając bundle exec.

 2
Author: Sean Kibler,
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
2012-07-04 14:53:07

Dla rails 2.3 edycja lib/tasks/rspec.rake jak w tym commicie zadziałało dla mnie:

Https://github.com/dchelimsky/rspec-rails/pull/11/files

 0
Author: guapolo,
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
2013-01-24 05:58:24

Zainstaluj rake 0.8.7 i odinstaluj 0.9.2.2

$ gem install rake -v 0.8.7
$ gem uninstall rake -v 0.9.2.2

Teraz użyj

$ bundle exec rake db:migrate
Myślę, że to ci pomoże. ;)
 0
Author: SpunkyLive,
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
2013-02-25 09:04:03

Run

bundle exec rake db:migrate
U mnie działa.
 0
Author: JakeGould,
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
2014-12-19 16:20:43