【问题标题】:Rack::Session::Pool Sessions in SinatraSinatra 中的 Rack::Session::Pool 会话
【发布时间】:2016-03-06 00:21:31
【问题描述】:

我似乎无法让这些会话继续到其他页面。

app.rb:

    class MyApp < Sinatra::Base
        use Rack::Session::Pool, :expire_after => 60 * 1

        get "/" do
            @foo = "one two three"
            erb :index
        end

        get "/first" do
            session[:foo] = Time.now
            session[:message] = "ALPHA"
            session[:message1] = "CHARLIE"

            erb :first
        end

        get "/second" do
            session[:message2] = "BRAVO2"

            erb :second
        end
    end

在 /first 和 /second 内部:

Sess: <%= session.inspect %><br>

会话不想跨页面进行。在 /first 我显示这个:

Sess: {"message"=>"ALPHA", "message1"=>"CHARLIE", "foo"=>2015-12-01 17:05:31 -0500}

在 /second 我正在显示这个:

Sess: {"message2"=>"BRAVO2"}

【问题讨论】:

  • 对我来说很好。你是如何启动应用程序的?您使用的是shotgun 还是类似的东西?
  • 乘客端。需要 File.expand_path('app', File.dirname(FILE)) 运行 MyApp
  • 这也许可以解释。我怀疑每个请求都被Passenger路由到不同的Ruby进程,所以会话(存储在进程中)在第二个请求中不可用。尝试使用rackup 直接运行您的应用,看看它是否可以在那里运行。
  • 我刚刚重命名了always_restart.txt,会话从/first 到/second,但是/third 没有显示会话。它只有 erb 文件 :third ,没有别的。我需要打电话来完成吗?
  • 抱歉,我不知道——我对Passenger的了解已经达到了极限。 (顺便说一句,您的问题中没有 third 路线。)

标签: ruby session sinatra


【解决方案1】:

只需要重新启动。图那个。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 2011-03-21
    • 2013-10-12
    • 2010-10-31
    • 2012-11-14
    • 2013-06-25
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多