与Rack应用程序共享会话/哈希

时间:2012-09-05 18:30:06

标签: ruby-on-rails ruby rack rack-middleware

我是Rack的新手,我正在玩它,我很乐意在我的所有机架应用中分享一些会话或哈希表,

假设我有以下config.ru

require "rack"
require "./my_app.rb"
require "./auth.rb"

use Rack::Session::Pool, :domain => 'example.com', :expire_after => 60 * 60 * 24
use Auth
run MyApp.new

我希望Auth检查内存中的user_id,如果第一次请求,则从db中获取数据,下次具有相同id的请求不会触发User.find,我不介意任何像共享哈希或其他任何实现,但对于这个例子我使用session [],我将非常感谢它给我任何关于如何使事情工作的提示,我不是在这里寻找真正的身份验证而不是共享密钥在众多的红宝石过程中。

让我们假设我将在nginx下运行10个瘦机架实例,所以我很乐意与所有进程共享会话/哈希。

And auth.rb : 

class Auth

  def initialize(app)
    @app = app
  end

  def call(env)     
    @request = Rack::Request.new(env)
    # here I want to find a way to search for key user_id and if I find it do nothing otherwise to set the value for the key 
    session[:user_id] ||= User.find(request.params[:user_id])
    @app.call(env)
  end
end

0 个答案:

没有答案
相关问题