Estou recebendo erros semelhantes aos que em estas perguntas , a não ser o meu estão ocorrendo em 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>'
A resposta nessas perguntas parece ser especificar gem 'rake', '0.8.7'
porque a versão 0.9 causa o problema.
Quando tento adicionar gem 'rake', '0.8.7'
ao meu gemfile e enviar para o Heroku, recebo este erro:
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 git@heroku.com:my_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:my_app.git'
Meu gemfile normalmente funciona bem no Heroku. O que devo fazer?
Respostas:
Coloque isso em seu Rakefile acima, require 'rake':
fonte
require
linha ao rakefile (e recommitir e empurrar novamente para o github e Heroku) resolveu. @David, estou usando o Windows com a estrutura RoR do RailInstaller 1.2.0.Sempre que você alterar o Gemfile, será necessário
bundle install
atualizar o lockfile (Gemfile.lock). O erro que você está obtendo no push não é específico para alterar a versão do rake.Observe a mensagem de erro que você recebeu:
fonte
Resolvi isso, finalmente, depois de muita bagunça. A versão resumida do que eu fiz, perdendo muitos experimentos, foi esta:
1) mude o Gemfile para especificar Rake 0.8.7
2) Retire um hack que eu tinha adicionado anteriormente ao Rakefile com base na questão do Stack Overflow Ruby on Rails e problemas com Rake: constante não inicializada Rake :: DSL :
Então, meu Rakefile voltou a ser o Rakefile padrão para meu aplicativo:
3) Altere o Heroku para executar meu aplicativo em Ruby 1.9.2:
E parece bom agora - a tarefa cron agendada está em execução de qualquer maneira.
EDIT: Ele fez correr bem, uma vez que, em seguida, explodiu novamente na próxima vez eu empurrei alguma coisa! Arrgh. Acho que consertei agora, com a adição da
delayed_job
gema, com base na conversa Não sei como construir tarefas de trabalho: trabalho .A instalação
delayed_job
não parece uma ótima solução, mas funcionou, e eu posso querer usá-la em algum momento, eu acho, especialmente com o cron job de uma vez por hora do Heroku (que simplesmente não é frequente o suficiente - há coisas que eu ' provavelmente vai querer ser executado a cada cinco minutos). Depois que instalei adelayed_job
gema, tive que fazer a configuração dela, caso contrário, o Heroku reclama da falta dadelayed_jobs
mesa:fonte
Eu tinha um aplicativo Rails 3.0.11, que especificava rake versão 0.8.7 no Gemfile para contornar o problema da versão 0.9.2 Rake :: DSL.
Depois de converter o aplicativo para Rails 3.2.0 (pilha Heroku Cedar), estava tendo um problema com o trabalhador (uma tarefa de rake) travando. Mudei "gem 'rake', '0.8.7'" para "gem 'rake'", que incluiu o rake versão 0.9.2.2. O trabalhador parou de travar com a nova versão.
fonte
Seu problema é causado por não excluir o
Gemfile.lock
arquivo e não é específico do Heroku. A exclusãoGemfile.lock
deve resolver o problema, mas o levará direto para outro:Infelizmente, ainda não encontrei a solução para esse problema, já que diminuir o Rake para 0.8.7 não parece funcionar aqui. Se outra pessoa tiver uma resposta, eu agradeceria muito.
fonte