Mam naprawdę frustrujący problem: Rake jest głupi.
Oto jak pojawia się problem:
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Oba działają dobrze, ale kiedy to robię,
$ rake db:migrate
Pojawia się 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, a ludzie je mieli. Po prostu nikt nigdy nie wydaje się rozwiązać problemu!
Jak rozwiązać ten problem?
ruby-on-rails
rake
HRÓÐÓLFR
źródło
źródło
bundle update rake
Najpierw musiałem to zrobić . Potem sprawdziłem zbundle show rake
. Powinien powiedzieć 0.8.7. Potemrake db:migrate
.gem "rake", "!= 0.9.0"
. Pozwala to uniknąć zepsutej wersji 0.9.0, ale zostanie zaktualizowana do nowszej po opublikowaniu nowszej wersji (usunięcie tego później nie zaszkodzi, ale utrzymanie go również nie powinno zaszkodzić).heroku rake db:migrate
i wydaje się, że to rozwiązało. pamiętaj, aby dodać i zatwierdzić te zmiany w git przed kontynuowaniem;)sudo gem install rake
upewnić się, żerake
wersja, do której dzwoniłem z linii poleceń, nie była w wersji 0.8.7.Przeprowadziłem badania tuż po mojej poprzedniej odpowiedzi (przepraszam, muszę to zrobić wcześniej).
Wszystkie problemy zostały rozwiązane dzięki klejnotowi Rake 0.9.2 .. Wykonałem następujące kroki:
gem install rake -v=0.9.2
(miałem klejnot 0.9.1)gem uninstall rake -v=0.9.1
bundle update
wtedy
db:migrate
pokazał ostrzeżenie,WARNING: Global access to Rake DSL methods is deprecated. Please....
Zostało to rozwiązane poprzez dodanie następujących elementów do pliku prowizji.
I, pominięte z
module ::RakeFileUtils extend Rake::FileUtilsExtend
opcji sugested przez @databyte.Oznacza to, że klejnot Rake 0.9.2 działa dobrze!
źródło
RakeFile
powinien być wcześniejrequire 'rake'
- złapał mnie :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
Przechodząc przez rozdział 2 Poradnika kolejowego (demo_app) i napotkałem ten problem. Próbowałem wszystkich innych odpowiedzi tutaj wymienionych, ale nie mogłem go uruchomić, dopóki nie zrobiłem tego:
Umieść to w swoim Rakefile powyżej wymaga „prowizji”:
przez Jak naprawić niezainicjowany stały problem Rake :: DSL na Heroku?
Ponownie poleciłem i przesłałem wszystkie pliki do Github i Heroku.
źródło
Wszystko, co musiałem zrobić, to użyć:
Miałem już wersję 0.9.2, po prostu potrzebowałem instalacji.
źródło
Ponownie zainstaluj klejnot prowizji i powinien działać dobrze:
Jeśli nie, podaj wersję „0.8.7” w swoim pliku Gemfile.
źródło
Jeśli nie używasz Bundlera:
Następnie wybierz odinstalować wersję 0.9.0.
źródło
Jeśli tak jak ja, utknąłeś na prowizji 0.8.7 i używasz Rails 3.2.x, a następnie kolej wymaga dodania Rake :: DSL
Aby rozwiązać ten problem, na górze swojego pliku Rakefile powinieneś dodać:
źródło
Rozwiązałem ten sam problem, wykonując następujące czynności:
W Gemfile:
Następnie uruchomiłem to na konsoli:
Następnie dodano następujące wiersze do Rakefile:
źródło
Railsy 3.1.rc1 zostały zaktualizowane. W przypadku własnych Rakefiles możesz dodać to przed wywołaniem load_tasks.
https://gist.github.com/4cd2bbe68f98f2f0249f
AKTUALIZACJA: Zauważyłem również, że już tutaj udzielono odpowiedzi: Niezdefiniowana metoda „zadanie” przy użyciu Rake 0.9.0
źródło
Miałem ten sam problem i musiałem użyć klejnotu rake 0.8.7 zamiast 0.9.0.
źródło
Jestem użytkownikiem systemu Windows XP i miałem ten sam problem.
Wprowadziłem gem „rake”, „0.8.7” do pliku gem, a następnie wpisałem następujące polecenie w oknie poleceń.
To naprawiło mój problem.
źródło
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Aby uruchomić typ serwera
bundle exec rails s
. Użyj bundle exec, a będziesz mieć pewność, że użyjesz odpowiednich klejnotów (wymagana wersja) do swojego projektu. Również polecam Ci dodaćvendor/bundle
do.gitignore
jeśli używaszgit
i zrobić aliasbundle exec
. Jeśli używaszzsh
, możesz zastosować to podejścieźródło
Tak samo jak Branstar powyżej - dzięki Branstar!
Postępowałem zgodnie z instrukcjami w Running Rails 3 w systemie Windows .
Wszystko działało aż do części „rake db: migrate”, która dała mi takie same wyniki jak oryginalny post.
Prowadziłem:
Ponownie pobiegłem:
Potem mogłem uruchomić serwer Ruby on Rails i wszystko miałem na swoim miejscu.
Jeszcze raz dziękuję Branstar :-)
źródło
Współczuję tobie (Michaiłowie), to naprawdę frustrujące. Szaleję przez prawie cały dzień. Nawet odinstalowałem Ruby i wszystkie jego zależne pliki i zamknąłem komputer, ale nadal mam ten sam problem.
To, co otrzymałem z komunikatu o błędzie, to problem z Rake 0.9.2. Wygląda na to, że nie został w pełni zainstalowany. Musiałem więc ponownie zainstalować
gem install rake -v=0.9.2
Nie byłem pewien, czy mam zainstalowaną prowizję –v0.9.1. Aby upewnić się, że jestem bezpieczny, próbowałem usunąć tę starą wersję
gem uninstall rake -v=0.9.1
. Ale pokazuje mi komunikat o błędzieOK, więc sprawdziłem wszystkie katalogi Rake na moim komputerze i stwierdziłem, że mam tylko Rake 0.9.2. Następnie, aby sprawdzić, czy wszystko poszło dobrze, przeprowadziłem migrację
rake db:migrate
. I zadziałało :)Myślę, że nie miałem Rake 0.9.1, ponieważ wyczyściłem Ruby ( rubyinstaller-1.9.2-p180 - na moim systemie Windows 7) i wszystkie klejnoty. W międzyczasie Rake 0.9.2 nie został w pełni zainstalowany.
źródło
Deinstalacja z „gem deinstalatorem rake” działała dla mnie, miałem zainstalowane 2 wersje, więc wykonałem czystą ponowną instalację.
„rake db: create” , aby upewnić się, że baza danych istnieje, a następnie „rake db: migrate”, aby zamknąć ofertę.
źródło
Miałem ten sam problem przy użyciu Rake 0.9.2.2. Rozwiązałem ten problem za pomocą exec pakietu.
źródło
W przypadku Rails 2.3 edycja
lib/tasks/rspec.rake
jak w tym zatwierdzeniu działała dla mnie:https://github.com/dchelimsky/rspec-rails/pull/11/files
źródło
Zainstaluj rake 0.8.7 i odinstaluj 0.9.2.2
Teraz użyj
myślę, że to ci pomoże;)
źródło
Biegać
mi to pasuje.
źródło