我编写了一个演示 HelloWorld Rails 应用程序并使用 WEBrick 对其进行了测试(它甚至不使用数据库,它只是一个打印“hello world”的控制器)。然后我尝试将其部署到由 Passenger 驱动的本地 Apache。事实上,这个测试只是为了让 Passenger 工作(这是我在 Apache 上的第一次部署)。现在我什至不确定 Passenger 是否有效,但我在 Apache 方面没有收到任何错误。
当我开火时http://rails.test/
浏览器显示 Rails 500 错误页面 - 所以我假设 Passenger 可以工作。我想调查日志,但碰巧 Production.log 是空的!我不认为这是一个权限问题,因为如果我删除该文件,当我重新加载页面时它会重新创建。我尝试更改日志级别conf/environments/production.rb
,尝试使用 Rails 控制台生产手动写入日志文件并
Rails.logger.error('asdf')
它返回true
但没有任何内容被写入生产日志。路径(根据 Rails.logger.inspect 获得)是正确的,并且我指出,如果我手动删除该文件,则会重新创建该文件。我怎样才能知道发生了什么事?
(我已经检查了 Apache 日志,而且我为 Passenger 设置了最高调试级别,但这似乎是 Rails 问题,因此服务器未记录)
假设您运行的是 Rails 3.2.1,这是一个错误。它是3.2.2 中修补 http://weblog.rubyonrails.org/2012/3/1/ann-rails-3-2-2-has-been-released.
如果您因任何原因无法升级到 3.2.2,GitHub 上的这个评论有一个解决方法 https://github.com/rails/rails/issues/4277#issuecomment-3999463:
# config/initializers/patch_rails_production_logging.rb
Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)