2009-10-27 4 views
11

Я использую приложение Sinatra с помощью пассажира. Развернутое приложение работает, но не полностью: некоторые пути работают нормально, другие просто создают пустую страницу. Я не могу найти какие-либо серьезные различия между маршрутами, которые работают и маршрутами, которые не делают, и я, кажется, не могу отследить любые ошибки ..Не удалось отладить приложение Sinatra в производстве

Обработчиков

Я определил в not_found и ошибок обработчики следующим образом:

not_found do 
    '404. Bummer!' 
end 

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

Они работают отлично на моей локальной машине, как в разработке и производстве, но я никогда не видел их прийти на сервере.

Apache Logs

Когда access.log и я хвост Apache ударил одного из разбитых путей, я вижу 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 ошибок? Спасибо за любую помощь!

+0

«Stackies»? :-) – SLaks

+1

+1 для Stackies! – DigitalRoss

+0

Пробовал ли вы простые приложения на httpd? как приложения «Как низкий мир». просто получите '/' do; «Как низкий мир»; конец Сначала проверьте его, затем следуйте своим приложениям. Проверьте свои простые приложения в httpd и файле конфигурации. Кстати, я думаю, вы не можете получить некоторые журналы https на синатра. – tknv

ответ

6

Я попытался бы использовать промежуточное программное обеспечение Rack :: ShowExceptions, чтобы попытаться выявить проблему. В вашем config.ru добавить эти две строки перед вызовом выполнения:

require 'rubygems' 
require 'your-app' 

use Rack::ShowExceptions 

run YourApp 

Это должно поймать и отображать трассировку для каких-либо исключений, происходящих в стойке или в вашем приложении. Это должно дать вам больше информации для работы, по крайней мере, это будет надеждой.

1

Возможно, у вас что-то не так с настройкой журнала?

Перенаправить STDERR при запуске сервера Sinatra, чтобы вы могли его прочитать. Вроде:

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

Спасибо за ответы, но я не нуждался в их использовании. Первоначально я развертывал приложение в sub-URI configuration. Когда я применил приложение к его собственному субдомену, проблемы исчезли.

So ..Я не совсем уверен, в чем проблема, но избавление от этой строки - моя конфигурация Apache для сайта - это то, что разрешено:

Redirect permanent/https://www.example.org/admin/member_photos/ 
Смежные вопросы