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

Dostaję błędy podobne do tych w te pytania , tylko że moje występują na Heroku :

2011-05-30T09:03:29+00:00 heroku[worker.1]: Starting process with command: `rake jobs:work`
2011-05-30T09:03:30+00:00 app[worker.1]: (in /app)
2011-05-30T09:03:30+00:00 heroku[worker.1]: State changed from starting to up
2011-05-30T09:03:33+00:00 app[worker.1]: rake aborted!
2011-05-30T09:03:33+00:00 app[worker.1]: uninitialized constant Rake::DSL
2011-05-30T09:03:33+00:00 app[worker.1]: /app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'

Odpowiedź w tych pytaniach wydaje się być określeniem gem 'rake', '0.8.7', ponieważ wersja 0.9 powoduje problem.

Kiedy próbuję dodać gem 'rake', '0.8.7' do mojego gemfile i wcisnąć do Heroku dostaję ten błąd:

Unresolved dependencies detected; Installing...
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control

You have added to the Gemfile:
* rake (= 0.8.7)
FAILED: http://devcenter.heroku.com/articles/bundler
! Heroku push rejected, failed to install gems via Bundler
error: hooks/pre-receive exited with error code 1
To [email protected]:my_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:my_app.git'

Mój gemfile normalnie działa dobrze na Heroku. Co mam zrobić?

Author: Community, 2011-05-31

5 answers

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

require 'rake/dsl_definition'
 205
Author: Kale,
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-07 09:31:24

Za każdym razem, gdy zmienisz plik Gemfile, musisz bundle install zaktualizować plik lockfile (Gemfile.lock). Błąd, który pojawia się podczas push, Nie dotyczy zmiany wersji rake.

bundle install
git commit -a -m "update lockfile"
git push heroku master

Zwróć uwagę na otrzymany komunikat o błędzie:

Zmodyfikowałeś swój plik Gemfile w trakcie tworzenia, ale nie sprawdzałeś wynikowej migawki (Gemfile.lock) do kontroli wersji

 8
Author: wuputah,
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-11 22:53:15

Rozwiązałem to, w końcu, po wielu pierdołach. Krótka wersja tego, co zrobiłem, pomijając wiele eksperymentów, była taka:

1) Zmień plik Gemfile na Rake 0.8.7

#in Gemfile
gem "rake", "0.8.7"

2) Wyjmij hack, który wcześniej dodałem do Rakefile na podstawie pytania o przepełnienie stosuRuby on Rails i problemy z Rake:: DSL:

Więc, mój Rakefile jest teraz z powrotem do bycia standardowym Rakefile dla mojego app:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'

MyApp::Application.load_tasks

3) Zmień Heroku, aby uruchomić moją aplikację w Ruby 1.9.2:

heroku stack:migrate bamboo-mri-1.9.2 --app myapp
git push heroku master

I teraz wydaje się w porządku - zaplanowane zadanie cron i tak działa.

EDIT: It did run fine, raz, a następnie blow up again next time I pushed something! Arrgh. Myślę, że naprawiłem to teraz, z dodatkiem klejnotu delayed_job, na podstawie rozmowy Nie wiem jak budować zadania: praca.

Instalacja delayed_job nie wydaje się dobrym rozwiązaniem, ale zadziałało, i może kiedyś będę chciał z niego skorzystać, zwłaszcza w przypadku pracy Heroku raz na godzinę cron (która po prostu nie jest wystarczająco częsta-są rzeczy, które prawdopodobnie będę chciał uruchamiać co pięć minut). Po zainstalowaniu delayed_job gem musiałem zrobić dla niego setup, w przeciwnym razie Heroku narzeka na brakującą delayed_jobs tabelę:

#add to gemfile
gem 'delayed_job'

#at command line
bundle install
rails g delayed_job
rake db:migrate
git add -A
git commit -a -m "added delayed_job gem"
git push
heroku rake db:migrate --app myapp
heroku restart --app myapp
 6
Author: Max Williams,
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:24:08

Miałem aplikację Rails 3.0.11, która określiła rake w wersji 0.8.7 w pliku Gemfile, aby ominąć problem Rake:: DSL w wersji 0.9.2.

Po przekonwertowaniu aplikacji na Rails 3.2.0( Heroku Cedar stack), miałem problem z zawieszeniem workera (zadanie rake). Zmieniłem "gem ' rake', ' 0.8.7 '"na " gem' rake'", który zawierał wersję rake 0.9.2.2. Pracownik przestał pracować z nową wersją.

 1
Author: Wes,
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-01-22 21:02:00

Twój problem jest spowodowany nie usunięciem pliku Gemfile.lock i nie jest specyficzny dla Heroku. Usunięcie Gemfile.lock powinno rozwiązać ten problem, ale doprowadzi Cię prosto do kolejnego:

To [email protected]:tailored-landing-pages.git
 * [new branch]      master -> master
manfred@painstation2:~/Desktop/projects/ror/ta/tlp307$ heroku rake db:migrate
rake aborted!
ninitialized constant Rake::DSL
/app/Rakefile:13:in `<class:Application>'
/app/Rakefile:12:in `<module:Tlp307>'
/app/Rakefile:11:in `<top (required)>'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/ruby1.9.2/bin/rake:31:in `<main>'

Niestety, nie znalazłem jeszcze rozwiązania tego problemu, ponieważ obniżenie wersji Rake do 0.8.7 wydaje się tutaj nie działać. Jeśli ktoś inny ma odpowiedź, byłbym bardzo wdzięczny.

 0
Author: klaffenboeck,
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-31 14:00:41