2009-10-27 60 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/ 
相關問題