我写了一个演示的HelloWorld Rails应用程序,并用WEBrick进行测试(它甚至不使用数据库,它只是一个打印“你好世界”的控制器).然后我试图将其部署到使用Passenger的本地Apache驱动.实际上这个测试只是让Passenger工作(这是我第一次在Apache上部署).现在我甚至不确定Passenger的工作原理,但是我在Apache方面没有任何错误.
当我发射http://rails.test/浏览器显示Rails 500错误页面 – 所以我认为Passenger的作品.我想调查日志,但是发生production.log是空的!我不认为这是一个权限问题,因为如果我删除该文件,当我重新加载页面时,它会被重新创建.我尝试在conf / environments / production.rb中更改日志级别,尝试使用Rails控制台生成手动写入日志文件,
Rails.logger.error('asdf')
它返回true,但没有写入到production.log.路径(根据Rails.logger.inspect获取)是正确的,我注意到,如果我手动删除该文件,则重新创建该文件.我怎么知道发生了什么?
(我已经检查了Apache日志,加上我为Passenger设置了最高的调试级别,但它似乎是一个Rails问题,所以没有被服务器记录)
解决方法
假设您正在运行Rails 3.2.1,这是一个错误.是
patched in 3.2.2.
如果由于任何原因您无法升级到3.2.2,this comment on GitHub has a workaround:
# config/initializers/patch_rails_production_logging.rb Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger