我正在使用passenger部署一个Sinatra应用程序。已经成功运行了应用程序,但有些路径可以正常工作,而其他路径则只呈现空白页面。我似乎找不出工作和不工作路由之间的重大差异,并且我无法追踪任何错误。
处理程序
我已经定义了not_found和error处理程序如下:
not_found do
'404. Bummer!'
end
error do
'Nasty error: ' + env['sinatra.error'].name
end
这些在我的本地机器上都很好用,在开发和生产环境下都没有问题,但是我从未在服务器上看到这些路径。
Apache日志
当我追踪Apache的access.log并访问其中一个出错的路径时,我会看到500错误:
helpers [27/Oct/2009:15:54:59 -0400] "GET /admin/member_photos/photos HTTP/1.1" 500 20 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3"
rack_hoptoad
我还安装并配置了rack_hoptoad中间件在我的config.ru文件中,但没有异常信息传递到hoptoad平台。
# Send exceptions to hoptoad
require 'rack_hoptoad'
use Rack::HoptoadNotifier, 'MY_API_KEY'
记录日志
我设置了如下的日志记录方式...
set :raise_errors => true
set :logging, true
log = File.new("log/sinatra.log", "a+")
STDOUT.reopen(log)
STDERR.reopen(log)
require 'logger'
configure do
LOGGER = Logger.new("log/sinatra.log")
end
helpers do
def logger
LOGGER
end
end
这个设置让我在我的路由中调用logger.info,对于正常工作的路由,在本地和服务器上都能正常运行,但是有些路径不够远无法调用logger.info。
该怎么办?
有什么想法可以帮助我查看是什么导致了500错误吗?谢谢任何帮助!
只需在代码中添加以下内容:get '/' do; 'Hello World';end
首先检查它,然后再检查你的应用程序。请检查您在httpd上的简单应用程序和配置文件。顺便说一下,在Sinatra上可能无法获取某些https日志。 - tknv