Sinatra haml页面被调用两次

时间:2012-11-01 17:04:40

标签: ruby sinatra haml rack webrick

  get '/test' do
     session[:my_session_id] = generate_random_id()
     puts 'begin haml debug'
     haml :"static/haml_page", :locals=>{:session_id => session[:my_session_id]}
  end

我在日志中看到上面的页面经常被调用两次:

begin haml debug
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET / HTTP/1.1" 200 4317 1.5421
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET /js/base/jquery.pjax.002902.js HTTP/1.1" 304 - 0.0234
[2012-11-02 00:00:01] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
127.0.0.1 - - [02/Nov/2012 00:00:01] "GET /css/docs.002902.css HTTP/1.1" 200 165 0.1086
.................................
begin haml debug
127.0.0.1 - - [02/Nov/2012 00:00:04] "GET / HTTP/1.1" 200 4317 1.9288

这让我有些问题。为什么会这样?

2 个答案:

答案 0 :(得分:2)

由于类似的问题,我已经转移到Webrick的Puma服务器。 不幸的是我丢失了这个问题的示例代码。 无论如何,如果你有这样的问题,请了解brouser的作用:

  1. 开发人员工具>网络(标签)将显示确切的请求(如果存在)
  2. 尝试通过减少代码来缩小此问题/错误,即评论所有JavaScripts,将页面内容更改为“Hello Wold”并观察问题是否仍然存在
  3. 分享您的代码:)
  4. 很抱歉在这里发帖,我不知道如何发布这个作为你的问题的补充。

答案 1 :(得分:0)

这是一个黑客,但如果你真的需要让它只运行一次代码: 创建一个全局布尔变量。在路由中,将所有内容都包含在布尔值的条件中。如果为false,则将其设置为true,运行代码并再次将其设置为false。