2009-10-27 19 views
11

Wdrażam aplikację Sinatra za pomocą pasażera. Wdrożona aplikacja działa, ale nie całkiem: niektóre ścieżki działają dobrze, inne po prostu renderują pustą stronę. I nie wydaje się znaleźć żadnych istotnych różnic między drogami, które pracują i tras, które nie, i nie wydaje się wytropić żadnych błędów ..Problemy z debugowaniem aplikacji Sinatra w produkcji

Rączki

Mam zdefiniowane z NOT_FOUND i błędów koparki w następujący sposób:

not_found do 
    '404. Bummer!' 
end 

error do 
    'Nasty error: ' + env['sinatra.error'].name 
end 

Działają one dobrze na moim komputerze lokalnym, zarówno w rozwoju i produkcji, ale nigdy nie zobaczyć te pojawią się na serwerze.

Apache Dzienniki

Kiedy access.log a ja ogon Apache uderzyć jednego z rozbitych ścieżek, widzę 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

Ja również Zainstalowałem i skonfigurowałem oprogramowanie pośredniczące rack_hoptoad w moim pliku config.ru, ale nie ma wyjątków.

# Send exceptions to hoptoad 
require 'rack_hoptoad' 
use Rack::HoptoadNotifier, 'MY_API_KEY' 

zalogowaniu

Wcześniej skonfigurować zalogowaniu jak tak ..

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 

Taka konfiguracja pozwala mi zadzwonić logger.info zasięgu moich trasach, który działa lokalnie i na serwer dla działających tras, ale zepsute ścieżki nie dostają się wystarczająco daleko, aby wywołać logger.info.

Co robić?

Jakieś pomysły, w jaki sposób mogę zobaczyć, co powoduje błędy 500? Dzięki za pomoc!

+0

"Stackies"? :-) – SLaks

+1

+1 dla Stackiesa! – DigitalRoss

+0

Czy próbowałeś prostych aplikacji na httpd? jak aplikacje typu "Jak nisko". po prostu "/" wykonaj; "Jak niski świat", koniec Najpierw sprawdź to, a następnie swoje aplikacje. Sprawdź swoje proste aplikacje na httpd i pliku konfiguracyjnym. przy okazji, myślę, że nie można uzyskać niektórych protokołów https dotyczących sinatry. – tknv

Odpowiedz

6

Chciałbym spróbować użyć oprogramowania pośredniczącego Rack :: ShowExceptions, aby spróbować prześledzić problem. W swojej config.ru dodać te dwie linie przed wywołaniem Run:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

To powinno złapać i wyświetlić ślad za jakiekolwiek wyjątki występujące w szafie lub w aplikacji. To powinno dać ci więcej szczegółów do pracy, przynajmniej taka byłaby nadzieja.

1

Może coś jest nie tak z konfiguracją dziennika?

Przekierowanie STDERR podczas uruchamiania serwera Sinatra, aby można było go odczytać. Podobnie jak:

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

Dzięki za odpowiedzi, ale nie musiałem ich używać. Pierwotnie wdrażałem aplikację w wersji sub-URI configuration. Gdy zamiast tego wdrożyłem aplikację do jej własnej poddomeny, problemy zniknęły.

So ..Nie jestem do końca pewien, na czym polegał problem, ale pozbycie się tej linii to moja konfiguracja Apache dla witryny, która rozwiązała pewne problemy:

Redirect permanent/https://www.example.org/admin/member_photos/ 
Powiązane problemy