Я довольно новичок в Rails и Rack, но у этого парня, казалось бы, прямая статья об использовании Rack для реализации динамического промежуточного программного обеспечения домена сеанса . Код выглядит хорошо, и я реализовал его здесь на своей локальной машине, но я все еще не могу превзойти домены верхнего уровня за один вход.
Вот код промежуточного программного обеспечения:
class SetCookieDomain
def initialize(app, default_domain)
@app = app
@default_domain = default_domain
end
def call(env)
host = env["HTTP_HOST"].split(':').first
env["rack.session.options"][:domain] = custom_domain?(host) ? ".#{host}" : "#{@default_domain}"
@app.call(env)
end
def custom_domain?(host)
domain = @default_domain.sub(/^\./, '')
host !~ Regexp.new("#{domain}$", Regexp::IGNORECASE)
end
end
А потом в environment.db:
config.load_paths += %W(#{RAILS_ROOT}/app/middlewares)
Наконец, в production.db (и development.db):
config.middleware.use "SetCookieDomain", ".example.org"
Любая помощь очень ценится.
РЕДАКТИРОВАТЬ: я использую Rails 2.3.3 и Rack 1.0