@Fly3110
web developer

Почему для мультидоменности в rails рекоммендуют отдельный класс, а не лямбду?

Всем привет.

В поисках решений обработки одним приложением запросов на нескольких доменах, я нахожу статьи типа вот этой: stackoverflow.com/questions/4207657/rails-routing-...
В этой и во всех других статьях рекоммендуют использовать класс для определения того, для какого из доменов предназначен данный блок маршрутов.

У меня в роутинге нормально живет (и работает) такая конструкция:

users_site  = ->(request) { 'users.site' == request.host }
api_site  = ->(request) { 'api.site' == request.host }
docs_site  = ->(request) { 'docs.site' == request.host }

constraints users_site do
...
end

constraints api_site do
...
end

constraints docs_site do
...
end


В чем минус такого решения кроме того, что для каждого нового домена надо будет писать отдельную лямбду?
Спасибо.
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
Jeiwan
@Jeiwan
Никакой разницы. В класс выносят, если слишком много логики в условии. У вас одна только строчка, поэтому достаточно лямбды. Это просто вопрос читаемости кода.
Но я бы вообще никогда не выносил в класс, так как придется каждый раз искать этот класс, лезть в него и разбираться в нем. Лучше, когда всё в одном месте.
Ну и этот ответ на SO морально устарел: сейчас ложить что-то в lib очень плохо. Но где тогда хранить эти классы, я не знаю — обычно это решается в рамках конкретного проекта, каждый делает, как ему удобно.
В дополнение, статья о том, как разбивать routes.rb на несколько модулей: blog.arkency.com/2015/02/how-to-split-routes-dot-r...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы