2011-07-18 9 views
6

Podczas próby rake db:migrate na Heroku. Otrzymuję następujący błąd.Prowizja została przerwana! Niezainicjowany stały Rake :: DSL na Heroku

rake aborted! 
uninitialized constant Rake::DSL 

Z tego co ja zebrane wydaje się to być błąd z Rake 0.9.2. Jeśli zrobię "listę klejnotów" lokalnie tylko Rake (0.8.7) wydaje się być zainstalowany.

Próbowałem dodać "gem rake", "0.8.7" "do mojego pliku gem i uruchomić instalację pakietu, ale wtedy pojawia się następujący błąd.

You have requested: 
rake = 0.8.7 

The bundle currently has rake locked at 0.9.2. 
Try running `bundle update rake` 

Jeśli zrobić bieg bundle update rake, to powraca do 0.9.2, a ja jestem tam, gdzie zacząłem.

Czy brakuje tu czegoś oczywistego?

Odpowiedz

10

Należy uruchamiać polecenia z pakietem exec, aby zapewnić sobie właściwe zależności. Tak uruchomić:

bundle exec rake db:migrate 

do bardziej szczegółowej postu zobaczyć Yehuda Katz blogu http://yehudakatz.com/2011/05/30/gem-versioning-and-bundler-doing-it-right/

Jeśli nadal masz problemy wydaje się, że kilka innych osób o tym samym numerze How to fix the uninitialized constant Rake::DSL problem on Heroku? którym rozwiązany poprzez dodanie po ich Rakefile:

require 'rake/dsl_definition' 
require 'rake' 
1

mam blogu o tym, You have already activated Rake 0.9.2. Istnieją dwa sposoby, aby to zrobić:

używają tylko starsza wersja Zgrabiarka:

Sprawdź swoje aktualne wersje Rake z $ gem list. Sprawdź, które wersje Rake masz i usuń wszystkie z wyjątkiem 0.8.7. Możesz usunąć klejnoty za pomocą gem uninstall rake -v=0.9.1 lub dowolnej wersji, którą chcesz usunąć.

Lub po prostu dodać jedną wkładkę do pliku Rake:

ile trzeba użyć starszej wersji Rake łatwiej jest dodać tę linię require 'rake/dsl_definition' do swoich aplikacji Rails męska Rakefile.

require File.expand_path('../config/application', __FILE__) 
require 'rake/dsl_definition' 
require 'rake' 
0

Użyłem tego, aby rozwiązać ten problem wcześniej, nie usuwając żadnych klejnotów. Ta metoda wymusi na Twojej aplikacji Rake 0.8.7, który jest bardziej stabilny niż 0,9+. Po określeniu wersji gry należy użyć polecenia bundle update rake, aby plik gemfile.lock był zsynchronizowany z plikiem gem (jeśli pominiesz ten krok, Heroku nie pozwoli ci przesłać kodu!)

W pliku gem określić wersję Rake używać:

"rake", "0.8.7" 

Następnie wykonaj:

bundle update rake 

Jeśli to nadal nie działa dla Ciebie, to zrobić:

sudo gem uninstall rake 
0

Podobnie jak w przypadku rich's answer (rozwiązanie tego problemu bez usuwania klejnotów), ale z poprawką do kroku 1., i kilka dodatkowych kroków:

  1. W pliku gem określić:

    gem 'rake', '0.8.7' 
    
  2. bundle install (dokumentacja Bundler mówią zawsze 'bundle install' po zmianie pliku gem)

  3. git commit -am "Fixed heroku rake problem by specifying rake 0.8.7 in Gemfile"

  4. git push heroku

  5. heroku rake db:migrate

mam ten sam błąd bez krokach 3 i 4.

3

mam ten błąd, gdy robi "Heroku rake db: migrować".

W /app:

rake aborted! 
uninitialized constant Rake::DSL 
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' 
.... 
... 
.... 
.. 
etc... 

Naprawiłem go dodając

require 'rake/dsl_definition' 

w Rakefile a następnie wpisane w

bundle update rake 
git add . 
git commit -m "Change RakeFile" 
git push heroku 
heroku rake db:migrate 

Ten rozwiązać mój problem. Nie dodałem gem 'rake', '0.8.7' w moim pliku gem , a moja lista gemów pokazuje prowizję (0.9.2, 0.8.7).

+0

Dzięki mamonluk nawet ja miałem ten sam problem dla mnie też pracował :) –

Powiązane problemy