1

我在部署到Heroku时出现问题。一切工作正常我的开发机器(我使用福尔曼/独角兽来运行网络工作者和背景DelayedJob过程)。然而,当我尝试制作在Heroku上运行,我得到记录器奇怪的错误...Unicorn部署到Heroku的问题 - 仅限于生产环境问题

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>' 

混乱的部分是,它的错误跟踪是所有宝石的代码......也许有毛病我麒麟/ 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 

我可以张贴任何其他将是有益的!在此先感谢...

回答

0

我不能为你的发展问题发表演讲,所以这是一个多回答一个建议的(但它需要比答案多一点的空间)。

我已经在生产环境中,在过去,对Heroku服务/宝石的问题。我建议你做的是在Heroku上创建一个临时环境并在那里测试你的代码。然而,你应该在两种方式进行测试:

  • 香草分段环境开始,然后...
  • 添加Heroku的服务逐一测试应用程序。

我曾遇到一个问题,一旦一切都在Dev和Staging中工作,但生产完全无法工作。原因是由于某些原因,文物的版本与Rails的版本不兼容。

另外,关于您的问题,您正在使用Heroku堆栈?你是在Cedar stack还是Bamboo上运行?

+0

感谢对答案的开始。我在Cedar堆栈上。我的应用程序在过去一直在工作,所以我不太确定究竟发生了什么变化,打破了一切。错误跟踪无助于这也是为什么我在这里! – Brandon 2012-02-16 03:18:21

+0

P.S.这是在Heroku的“干净”生产安装(没有服务已经激活) - 这是我的开发代码直接进入生产 – Brandon 2012-02-16 06:32:10