私は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