【问题标题】:output from a ruby script into web browser从 ruby​​ 脚本输出到 Web 浏览器
【发布时间】:2013-05-21 19:00:35
【问题描述】:

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

【问题讨论】:

    标签: ruby browser rack


    【解决方案1】:

    看起来你周围有<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)
    

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

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 2012-04-19
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多