2013-05-21 201 views
0

我試圖實現http://blog.sosedoff.com/2011/04/09/serving-maintenance-page-with-rack-middleware/只有一個區別 - 我的消息是讀像這樣的整體* .html文件:輸出到Web瀏覽器

def default_prompt(t) 
     File.open("public/tmp/maintenance/maintenance.html", "r").read 
    end 

和輸出

if File.exists?(@file) 
    body = @block.nil? ? default_prompt(time_info) : @block.call(time_info) 
    res = Response.new 
    res.write(body) 
    res.finish 
    else 
    @app.call(env) 

但是我最終得到了html文件的文本,因爲輸出被<pre>標籤包圍。
我該如何解決這個問題?

回答

2

看起來您只有<pre>標籤。實際發生的情況是,您要返回的結果不是對Rack正確形成的響應(您需要某種類型的內容標題來指示您要發回的內容)。你需要實現更多這樣的東西:

if File.exists(@file) 
    maintenance_html = File.open(@file, "r").read 
    [200, {"Content-Type" => "text/html"}, maintenance_html] # This is a proper Rack response. 
else 
    @app.call(env) 

裏面的中間件調用函數。