Problema con Unicorn Deploy per Heroku - solo questioni ambientali di produzione
-
25-10-2019 - |
Domanda
Ho problemi che implementano a Heroku. Tutto funziona bene sulla mia macchina di sviluppo (sto usando Foreman / Unicorn per eseguire il lavoratore web e sfondo processo DelayedJob). Tuttavia quando provo a fare funzionare in produzione su Heroku, ottengo strani errori circa 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>'
La parte di confusione è che la traccia di errore è tutto il codice gioiello ... forse qualcosa di sbagliato con il mio file / proc unicorno?
Unicorn:
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
posso postare qualsiasi altra cosa sarebbe utile !!! Grazie in anticipo ...
Soluzione 2
Risulta che Heroku attualmente non vanno d'accordo con Rails 3.2, e personalizzato di registrazione.
Quello che fissa il mio problema - commentare le seguenti:
#config.log_tags = [:uuid, :remote_ip]
Si veda anche http://broadcastingadam.com/2012/01/rails320_heroku_and_rails_log_stdout
Altri suggerimenti
Non posso parlare per le questioni relative allo sviluppo, per cui questa è più di una suggestione che una risposta (ma richiede un po 'più spazio di una risposta).
ho avuto problemi con Heroku e servizi / gemme in ambiente di produzione in passato. Quello che vi consiglio di fare è creare un ambiente di staging su Heroku e testare il codice lì. Tuttavia, è opportuno verificare in due modi:
- Un ambiente vaniglia messa in scena per cominciare poi ...
- Aggiungi i servizi Heroku uno per uno e testare l'applicazione.
Ho avuto un problema con la Reliquia una volta, dove tutto ha funzionato in Dev e messa in scena, ma la produzione non ha funzionato affatto. Venne fuori che versione di reliquia non era compatibile la versione di Rails per qualche motivo.
Inoltre, per quanto riguarda la tua domanda, cosa Heroku pila sono in esecuzione su? Sei in esecuzione sullo stack cedro o di bambù?