我正在尝试实现http://blog.sosedoff.com/2011/04/09/serving-maintenance-page-with-rack-middleware/只有一个区别 - 我的消息是一个整个* .html文件,其读取方式如下:
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>
标签包围
我该如何解决这个问题?
答案 0 :(得分: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)
在您的中间件调用函数内部。