Это действительно два вопроса.
Думаю, я отвечу так.
Как разрешить клиентам добавлять собственный домен в мое приложение на базе heroku?
Итак, в вашем примере их доменное имя www.user1.com
должны произойти две вещи
www.user1.com
необходимо добавить в ваши домены heroku для приложения
- днс для
www.user1.com
должен быть установлен на серверах heroku
Чтобы добавить этот новый домен, я думаю, вам нужно сохранить пользовательский домен в приложении,
и когда он будет изменен или создан, убедитесь, что задание в очереди настроено, чтобы перенести это изменение конфигурации в heroku.
Чтобы правильно выполнить днс, я надеюсь, что достаточно добавить CNAME
для user1.app.com
.
Поэтому, если у вас есть подстановочный знак CNAME, связывающий днс с Heroku, вы можете избежать простоев, которые могут возникнуть, если Heroku снова получит DOS-версию.
Как я могу показывать контент, основанный на домене, а не только на поддомене?
Ну, как-то вы уже отличаете user1.app.com
от user2.app.com
Может быть, вы просто понюхали request.host
.
Теперь вам просто нужно сначала попробовать пользовательский домен.
Может быть, это сработает.
before_filter :set_client
def set_client
@client = Client.find_by_custom_domain(request.host) || Client.find_by_subdomain(request.host.split(".").first)
unless @client
raise "unrecognised domain #{request.host}"
end
end