我使用的是basecamp风格的子域名,rails 3.2,设计2,乘客独立。 * .example.com上的一切正常。现在我想在* .beta.example.com上启动一个临时环境,但不确定最好的方法是什么。
以下方法检查用户是否请求app.example.com(然后他被重定向到登录页面)或某人的帐户(例如user1.example.com),否则返回badrequest。 (app_subdomain =' app')
def validate_subdomain
if request.subdomain == Settings.app_subdomain
redirect_to(user_signed_in? ? users_accounts_path : new_user_registration_path)
else
head :bad_request unless current_account?
end
end
如果我将其部署到* .beta.example.com,则request.subdomain返回" app.beta"和验证不再有效。
最优雅,最可重复的解决方法是什么?除了手动剥离环境的子域名。感谢
答案 0 :(得分:1)
选项一:将request.subdomain
更改为request.subdomains.first
。然后,只会识别app
中的app.bla-bla-bla.anything.example.com
。
选项二:在config / environments / production.rb中设置config.action_dispatch.tld_length
。设置应用程序的TLD(顶级域)长度。默认为1.
tld_length上的来源: