Rails - динамические куки-домены с использованием Rack - PullRequest
5 голосов
/ 30 июля 2009

Я довольно новичок в 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

1 Ответ

1 голос
/ 12 марта 2010

У меня были похожие проблемы с тем, чтобы заставить это работать в режиме разработки. Когда я пытался с localhost, я не мог заставить его работать. Однако, получив к нему доступ через домен, настроенный в / etc / hosts для указания на localhost, например computer.local, я смог заставить его работать.

...