Маршрутизация поддоменов с devise не работает на heroku

Я определил несколько типов пользователей, использующих devise (members, company_users и т. Д.), И я хотел бы использовать разные поддомены для страниц входа в систему для каждого типа пользователей.

Я сослался на этот Railscast, чтобы реализовать соответствие поддомена и перенаправление на соответствующее действие. Мой routes.rb файл выглядит так:

devise_for :company_users, :controllers => { :registrations => 'company_users/registrations', :sessions => 'company_users/sessions'  }

devise_scope :company_user do
  constraints Subdomain do
    match '/' => 'company_users/sessions#new'
  end
end

И мой lib/subdomain.rb файл:

class Subdomain
  def self.matches?(request)
    request.subdomain.present? and request.subdomain =~ /\Acompanies\z/
  end
end

Локально работает отлично. Я тестировал с помощью companies.lvh.me:3000 (как предлагает тот же railscast), и он действительно перенаправляет на правильную страницу входа.

Чтобы попытаться заставить его работать на Heroku, я добавил домен, используя heroku domains:add companies.mydomain.com, и добавил новую запись CNAME на свой DNS-сервер, указывающую на мое приложение Heroku.

Однако, когда я пытаюсь получить доступ к company.mydomain.com, он перенаправляет меня на корневой путь, а не на правильную страницу входа. Я как бы не понимаю, что происходит. Любая помощь будет оценена по достоинству.


person Renan    schedule 17.05.2013    source источник
comment
У вашего домена такой же tld и домен heroku? У меня .com.br, и без добавления config.action_dispatch.tld_length = 2 в production.rb я получал такое же поведение, поскольку Rails неправильно определял поддомен.   -  person Kadu Diógenes    schedule 05.08.2013
comment
Хммм, спасибо за комментарий! Думаю, это может быть (мой tld тоже br :)). Если это сработает, я попрошу вас превратить ваш комментарий в ответ, чтобы я мог его принять.   -  person Renan    schedule 26.08.2013
comment
@Kadu: Преобразуйте свой комментарий в ответ - это решение сработало для меня, по крайней мере, и должно быть одобрено. Спасибо за помощь!   -  person fatty    schedule 09.10.2013


Ответы (1)


Это происходит, когда tld вашего домена отличается от tld домена heroku.

У меня .com.br, и мне нужно добавить config.action_dispatch.tld_length = 2 в production.rb, чтобы Rails мог правильно проанализировать URL и перенаправить на правильный поддомен.

person Kadu Diógenes    schedule 14.10.2013