복붙노트

[RUBY-ON-RAILS] 어떻게에게 Heroku에 초기화되지 않은 일정 레이크 :: DSL의 문제를 해결하기 위해?

RUBY-ON-RAILS

어떻게에게 Heroku에 초기화되지 않은 일정 레이크 :: DSL의 문제를 해결하기 위해?

나는이 질문의 것과 유사한 오류를 얻고, 나의에게 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>'

그 질문에 대답은 0.9 버전은 문제가 발생하기 때문에, '0.8.7을'보석 '레이크'를 지정하는 것 같다.

내가 Heroku가 나는 내 gemfile 푸시에, '0.8.7을'보석 '레이크'를 추가하려고하면이 오류가 발생합니다 :

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 'git@heroku.com:my_app.git'

내 gemfile는 일반적으로 Heroku가에서 잘 작동합니다. 어떻게해야합니까?

해결법

  1. ==============================

    1.'레이크'이상이 필요 귀하의 Rakefile이 넣어 :

    '레이크'이상이 필요 귀하의 Rakefile이 넣어 :

    require 'rake/dsl_definition'
    
  2. ==============================

    2.당신이 당신의 Gemfile을 변경할 때마다, 당신은 당신의 잠금 파일 (Gemfile.lock)를 업데이트하기 위해 설치 번들해야합니다. 당신은 푸시에지고있어 오류가 레이크의 버전을 변경하는 특정하지 않습니다.

    당신이 당신의 Gemfile을 변경할 때마다, 당신은 당신의 잠금 파일 (Gemfile.lock)를 업데이트하기 위해 설치 번들해야합니다. 당신은 푸시에지고있어 오류가 레이크의 버전을 변경하는 특정하지 않습니다.

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

    받은 오류 메시지를 참고 :

  3. ==============================

    3.나는에 대한 비료를 많이 후, 마지막으로,이 문제를 해결했다. 내가 한 일의 짧은 버전은 많은 실험을 누락이 있었다 :

    나는에 대한 비료를 많이 후, 마지막으로,이 문제를 해결했다. 내가 한 일의 짧은 버전은 많은 실험을 누락이 있었다 :

    1) Gemfile는 레이크 0.8.7을 지정하도록 변경

    #in Gemfile
    gem "rake", "0.8.7"
    

    2) 이전에 레일 및 레이크 문제에 대한 스택 오버플로 질문 루비에 따라 Rakefile에 추가했다고 해킹을 가지고 : 초기화되지 않은 일정 레이크을 :: DSL을 :

    그래서, 내 Rakefile 내 응용 프로그램에 대한 표준 Rakefile 인 다시 지금 :

    # 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) 변경 Heroku가 루비 1.9.2 내 응용 프로그램을 실행합니다 :

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

    그리고 지금의 벌금을 보인다 - 예약 된 크론 작업이 어쨌든 실행 중입니다.

    편집 : 그런 다음, 한 번, 벌금을 실행 내가 뭔가를 밀어 다시 다음 번에 날려 않았다! Arrgh. 작업 : 내가 뭘 어떻게 빌드 작업 작업에 알 수없는 대화에 근거하여 delayed_job 보석의 추가와 함께, 지금 고정 된 생각합니다.

    설치 delayed_job은 좋은 해결책은 아닌 것 같아,하지만 일이 있고, 나는 자주 충분하지 그냥있는 (특히 Heroku가의 한때 시간당 cron 작업으로 추측 언젠가 그것을 사용할 수도 있습니다 - 일 내가있다 'LL 아마) 5 분마다 실행하려는. 나는 delayed_job 보석을 설치 한 후 나는 그렇지 Heroku가 누락 된 delayed_jobs 테이블에 대한 불평, 이에 대한 설정을해야했다 :

    #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
    
  4. ==============================

    4.나는 버전 0.9.2 레이크 :: DSL 문제를 주변에 얻을 수있는 Gemfile에 레이크 버전 0.8.7을 지정한 레일 3.0.11 응용 프로그램을했다.

    나는 버전 0.9.2 레이크 :: DSL 문제를 주변에 얻을 수있는 Gemfile에 레이크 버전 0.8.7을 지정한 레일 3.0.11 응용 프로그램을했다.

    나는 레일 3.2.0 (Heroku가 삼나무 스택)에 응용 프로그램을 변환 후, 나는 노동자 문제 (갈퀴 작업) 충돌을 가졌다. 나는 레이크 버전 0.9.2.2를 번들로 '보석'레이크 ''에 ''0.8.7를 '보석'레이크 '를 "로 변경. 작업자는 새 버전 충돌 중단되었습니다.

  5. ==============================

    5.귀하의 문제는 Gemfile.lock 파일을 삭제하지 않음으로써 발생하고 Heroku가 특정 아닙니다. 삭제 Gemfile.lock는이 문제를 해결해야하지만, 다른 하나 바로 당신을 이끌 것입니다 :

    귀하의 문제는 Gemfile.lock 파일을 삭제하지 않음으로써 발생하고 Heroku가 특정 아닙니다. 삭제 Gemfile.lock는이 문제를 해결해야하지만, 다른 하나 바로 당신을 이끌 것입니다 :

    To git@heroku.com: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>'
    

    불행히도, 난 여기에 작동하지 않는 것 0.8.7에 레이크를 다운 그레이드하기 때문에, 아직 그 문제에 대한 해결책을 발견하지 않았습니다. 다른 사람이 답을 가지고 있다면, 나는 그것을 대단히 감사하겠습니다.

  6. from https://stackoverflow.com/questions/6181312/how-to-fix-the-uninitialized-constant-rakedsl-problem-on-heroku by cc-by-sa and MIT license