如何在没有 lvh.me 的情况下为本地主机上的 saas 应用程序使用公寓 gem?

How to use apartment gem for saas app on localhost without lvh.me?

如何实现 tentant 去 url 喜欢:

localhost:3000/tenent1

而不是使用 lvh 或任何域或子域,例如:

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

tenent1.com 

其中 tenent1 是用户在注册过程中创建的租户之一。我不想使用子域,域。

不确定你为什么喜欢这条路线,但你可以这样尝试:-

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

所以它会像这样生成 url :-

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

此时您需要使用此路径提供动态 ID,例如 -

tenent_path(id: 1)

在浏览器中它会生成与你 wanted:_

完全相同的 url
localhost:3000/teanent1

并且在控制器端,您可以在 params[:id]

中访问此 ID

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
     }