乗客を使用してSinatraアプリをデプロイしています。デプロイされたアプリは機能していますが、完全ではありません。一部のパスは正常に機能し、他のパスは単に空白のページをレンダリングします。動作するルートと動作しないルートの間に大きな違いは見当たらず、エラーを追跡できないようです。
ハンドラー
not_foundハンドラーとエラーハンドラーを次のように定義しました。
not_found do
'404. Bummer!'
end
error do
'Nasty error: ' + env['sinatra.error'].name
end
これらは、開発と本番の両方でローカルマシンで正常に機能しますが、サーバーに表示されることはありません。
Apacheログ
Apacheのaccess.logを追跡し、壊れたパスの1つにヒットすると、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エラーの原因をどのように確認できるかについてのアイデアはありますか?助けてくれてありがとう!