Herokuへのユニコーン展開の問題 - 生産環境の問題のみ
-
25-10-2019 - |
質問
Herokuに展開するのに問題があります。開発マシンではすべてが正常に機能します(フォアマン/ユニコーンを使用してWebワーカーとバックグラウンドディレイエッドジョブプロセスを実行しています)。しかし、Herokuで制作を実行しようとすると、Loggerについて奇妙なエラーが発生します...
app error: undefined method `tagged' for #<Logger:0x00000005aee368> (NoMethodError)
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/rack/logger.rb:14:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/request_id.rb:22:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/runtime.rb:17:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb:15:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/static.rb:53:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:132:in `forward'
/app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:241:in `fetch'
/app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:181:in `lookup'
/app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:65:in `call!'
/app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:50:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/engine.rb:479:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/application.rb:220:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:530:in `process_client'
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:604:in `worker_loop'
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:487:in `spawn_missing_workers'
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:137:in `start'
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.2.0/bin/unicorn:121:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/bin/unicorn:19:in `load'
/app/vendor/bundle/ruby/1.9.1/bin/unicorn:19:in `<main>'
紛らわしい部分は、エラートレースがすべてGEMコードであるということです...私のUnicorn / Procファイルに何か問題がありますか?
ユニコーン:
worker_processes 3 # amount of unicorn workers to spin up
preload_app true
timeout 30 # restarts workers that hang for 30 seconds
@delayedjob_pid = nil
before_fork do |server, worker|
@delayedjob_pid ||= spawn("bundle exec rake environment jobs:work QUEUE=immediate")
end
after_fork do |server, worker|
ActiveRecord::Base.establish_connection
end
Proc:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
私は他に役立つものを投稿することができます!!!前もって感謝します...
解決 2
Herokuは現在、Rails 3.2とカスタムロギングでうまくやっていないことがわかりました。
私の問題を修正したもの - 次のことをコメントしてください:
#config.log_tags = [:uuid, :remote_ip]
参照してくださいhttp://broadcastingadam.com/2012/01/rails320_heroku_and_rails_log_stdout
他のヒント
私はあなたの開発の問題について話すことができないので、これは答えというよりも提案のようなものです(ただし、答えよりも少し多くのスペースが必要です)。
私は過去に生産環境でHerokuとサービス/宝石に問題がありました。私があなたにすることをお勧めするのは、Herokuでステージング環境を作成し、そこでコードをテストすることです。ただし、2つのマナーでテストする必要があります。
- そもそもバニラステージング環境...
- Herokuサービスを1つずつ追加し、アプリケーションをテストします。
すべてが開発とステージングで機能した場合、私は一度遺物に問題がありましたが、生産はまったく機能しませんでした。 Relicのバージョンは、何らかの理由でRailsのバージョンと互換性がなかったことが判明しました。
また、あなたの質問に関して、あなたはどのHerokuスタックを走らせていますか?シーダースタックや竹で走っていますか?