从ruby脚本输出到Web浏览器

时间:2013-05-21 19:00:36

标签: ruby browser rack

我正在尝试实现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>标签包围 我该如何解决这个问题?

1 个答案:

答案 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)

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