[英]How to show errors that occur in a modular Sinatra Application which is hosted by Passenger?
我有一個應用程序課
class MyApplication < Sinatra::Base
# ... do something ...
end
和config.ru文件
# ... load libraries ...
run MyApplication
我通常將Passenger作為我的開發環境,對於正常的(非模塊化)Sinatra應用程序來說,它可以很好地工作。 但是在這種情況下,我沒有錯誤輸出,而是獲得了默認的內部服務器錯誤頁面,該頁面不是很有幫助。 有沒有一種方法可以啟用默認錯誤處理?
我已經被這個問題困擾了好一陣子了,終於找到了神奇的咒語來恢復默認的錯誤處理。 事實證明,它與Passenger無關,而是由使用Sinatra :: Base而不是經典(頂級)應用程序引起的。 如果您將Sinatra :: Base子類化,則許多選項具有不同的默認值。 在這種情況下,您需要更改的選項是:
set :show_exceptions, true if development?
如果您還想重新啟用使用應用程序內錯誤處理程序的(相關)功能,請使用:
set :raise_errors, false
允許error do ... end
塊像在經典應用程序中那樣工作。
有關經典應用程序和Sinatra :: Base應用程序之間差異的其他信息,可以在此燈塔票中找到,並且在Google小組中對此特定差異進行了一些討論 。
您可以使用Rack :: ShowExceptions顯示堆棧跟蹤
configure do
enable :dump_errors,:raise_errors
use Rack::ShowExceptions
end
並使用Sinatra錯誤處理程序顯示
$exception = Sinatra::ShowExceptions.new(self)
error do
@error = env['sinatra_error']
html_body = $exception.pretty(env,@error)
end
查看您的Web服務器錯誤日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.