Проблемы с отладкой приложения Sinatra в рабочей среде

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

Обработчики

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

not_found do
  '404. Bummer!'
end

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

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

Журналы Apache

Когда я просматриваю журнал 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, но никаких исключений не происходит. .

# 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 ошибок? Спасибо за любую помощь!


person Zeke    schedule 27.10.2009    source источник
comment
Вы пробовали простые приложения на httpd? как приложения "Как низко мир". просто сделай '/' сделай; 'Как низко мир'; конец Сначала проверьте это, а затем свои приложения. Пожалуйста, проверьте свои простые приложения на httpd и в файле конфигурации. кстати, я думаю, что на синатре не получится получить какие-то логи https.   -  person tknv    schedule 30.10.2009


Ответы (3)


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

require 'rubygems'
require 'your-app'

use Rack::ShowExceptions

run YourApp

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

person plainprogrammer    schedule 01.11.2009

Может, что-то не так с настройкой вашего журнала?

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

ruby myapp.rb -p 1234 > log/app.log 2>&1
person Pedro    schedule 31.10.2009

Спасибо за ответы, но мне не пришлось их использовать. Изначально я развертывал приложение в конфигурации под-URI . Когда я вместо этого развернул приложение на его собственном поддомене, проблемы исчезли.

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

Redirect permanent / https://www.example.org/admin/member_photos/
person Zeke    schedule 05.11.2009