如何在没有 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
}
如何实现 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:_
完全相同的 urllocalhost:3000/teanent1
并且在控制器端,您可以在 params[: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
}