Pregunta

Tengo problemas para desplegar en Heroku. Todo funciona bien en mi máquina de desarrollo (estoy usando Foreman/Unicorn para ejecutar el trabajador web y el proceso de Jobs DelteredJob). Sin embargo, cuando trato de correr en producción en Heroku, recibo errores extraños sobre 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 confusa es que el rastro de error es todo código de gema ... ¿tal vez algo está mal con mi archivo unicornio / proc?

Unicornio:

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

¡Puedo publicar cualquier otra cosa que sea útil! Gracias por adelantado...

¿Fue útil?

Solución 2

Resulta que Heroku actualmente no se lleva bien con Rails 3.2 y registro personalizado.

Lo que solucionó mi problema: comente lo siguiente:

 #config.log_tags = [:uuid, :remote_ip]

Ver tambiénhttp://broadcastingadam.com/2012/01/rails320_heroku_and_rails_log_stdout

Otros consejos

No puedo hablar por sus problemas de desarrollo, por lo que esto es más una sugerencia que una respuesta (pero requiere un poco más de espacio que una respuesta).

He tenido problemas con Heroku y servicios/gemas en el entorno de producción en el pasado. Lo que le recomiendo que haga es crear un entorno de puesta en escena en Heroku y probar su código allí. Sin embargo, debes probarlo en dos modales:

  • Para empezar, un entorno de puesta en escena de vainilla ...
  • Agregue los servicios de Heroku uno por uno y pruebe su aplicación.

Tuve un problema con Relic una vez donde todo funcionó en desarrollo y puesta en escena, pero la producción no funcionó en absoluto. Resultó que la versión de Relic no era compatible con la versión de Rails por alguna razón.

Además, con respecto a su pregunta, ¿en qué pila de Heroku está corriendo? ¿Estás corriendo en la pila de cedro o el bambú?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top