2009-10-27 51 views
11

我正在部署使用乘客的Sinatra应用程序。部署的应用程序正在工作,但并非完全:某些路径正常工作,其他路径只是呈现空白页面。我似乎无法找到工作的途径和不路由之间的主要区别,我似乎无法追查任何错误..无法在生产中调试Sinatra应用程序

我已经定义

处理程序在NOT_FOUND和错误处理程序如下:

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

我也在我的config.ru中安装和配置了rack_hoptoad中间件,但没有任何例外使它成为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错误的原因?谢谢你的帮助!

+0

“Stackies”? :-) – SLaks 2009-10-27 20:28:59

+1

+1对Stackies! – DigitalRoss 2009-10-28 01:03:18

+0

您是否尝试使用httpd上的简单应用程序?就像一个'多么低的世界'的应用程序。 只是'/'做; '如何低世界';结束 首先检查它,然后下一个你的应用程序。请检查你的简单的应用程序在httpd和配置文件。顺便说一下,我认为你无法在sinatra上获得一些https日志。 – tknv 2009-10-30 09:02:31

回答

6

我会尝试使用Rack :: ShowExceptions中间件来试图找出问题。在您的config.ru这两条线运行调用之前添加:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

这应该捕捉并显示在机架或应用程式中发生的任何异常回溯。这应该给你更多的细节,至少这将是希望。

1

也许你的日志设置有问题吗?

运行Sinatra服务器时重定向STDERR,以便您可以读取它。像:

ruby myapp.rb -p 1234 > log/app.log 2>&1 
0

感谢您的回复,但我并没有最终需要使用它们。我最初是在sub-URI configuration中部署应用程序。当我将应用程序部署到自己的子域时,问题就消失了。

因此..我不确定问题是什么,但摆脱这一行是我的网站的Apache配置是什么解决的事情:

Redirect permanent/https://www.example.org/admin/member_photos/ 
相关问题