Как использовать квартирный драгоценный камень для приложения saas на localhost без lvh.me?

Как реализовать tentant для перехода на URL вроде:

localhost:3000/tenent1

вместо использования lvh или любого домена или субдомена, например:

http://tenent1.lvh.me:3000
tenent1.example.com 

или же

tenent1.com 

где tenent1 - это один из арендаторов, созданных пользователем в процессе регистрации. Я не хочу использовать поддомен, домен.

2 ответа

Решение

Apartment У gem есть файл инициализатора, в котором вы можете создать любой вид лифта. Я думаю, вы не хотите субдомен, так что вы можете написать лифт, который будет проверять первую часть маршрута (например, localhost:3000/tenant1/)

Для получения дополнительной информации см. Apartment файл инициализатора.

Я думаю, в вашем случае это будет что-то вроде этого (добавьте это в файл инициализатора квартиры)

 Rails.application.config.middleware.use 'Apartment::Elevators::Generic', lambda { |request|
   request.path.split('/')[1] # First element will be an empty string
     }

Не уверен, почему вы хотите, чтобы эти маршруты понравились, но вы можете попробовать это как:-

get 'tenent:id', to: 'example_controller#example_action' as: :tenent

поэтому он будет генерировать URL следующим образом:

tenent GET    /tenent:id(.:format)  example_controller#example_action

На этом этапе вам нужно будет предоставить динамический идентификатор с этим путем, как

tenent_path(id: 1)

в браузере он сгенерирует точно такой же URL, который вы хотели:_

localhost:3000/teanent1

и на стороне контроллера вы можете получить доступ к этому идентификатору в params[:id]

Другие вопросы по тегам