Создание маршрутов rails только для локального хоста

#ruby-on-rails #ruby #routing

#ruby-on-rails #ruby #маршруты

Вопрос:

Я бы хотел, чтобы определенные маршруты rails были доступны только с localhost. Другими словами, если вы попытаетесь получить доступ к этому URL-адресу из нелокального соединения, вам будет выдан ответ, эквивалентный маршруту, которого не существует.

Оптимально, чтобы какой-то способ указания маршрутов как локальных в самом routes.rb был бы самым чистым решением, но если есть какой-то способ отфильтровать запрос позже, например, на уровне контроллера, это тоже нормально.

Ответ №1:

Если вы хотите указать, что эти URL-адреса существуют только в среде разработки, вы можете сделать просто:

 if Rails.env.development?
  #your routes
end
  

Но если к вашему серверу в режиме разработки обращаются другие пользователи, и вы хотите указать, что эти маршруты существуют только для локального хоста, тогда вы можете добавить ограничение для домена:

 if Rails.env.development?
  resources :users, constraints: { domain: 'localhost' }
end
  

Ответ №2:

Файл routes.rb содержит специальный DSL для маршрутов, но это все еще ruby. Итак, вы пытались привести свои маршруты в простое состояние?

 # routes.rb

if Rails.env.development?
  # your special local routes definition
end
  

Комментарии:

1. Да, это более понятный способ. Спасибо ypu, я исправил свой пример кода.