0

我正在尝试实现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>标签包围了。
我怎么解决这个问题?

4

1 回答 1

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)

在您的中间件调用函数内部。

于 2013-05-21T20:22:19.723 回答