0

私はRackを初めて使用し、それをいじって遊んでいます。すべての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をチェックするようにしたいのですが、リクエストが初めての場合は、データベースからのデータをフィッチングします。次に同じ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
4

0 に答える 0