支持Rails中的多个域/子域

我有一个与Tumblr类似设置的Rails应用程序,也就是说,您可以拥有:(1)子域托管(your-username.myapp.com)(2)域名托管(your-username.com)

两者都会转发到使用我的应用程序创建的该用户的个性化网站。

我怎样才能在Rails中实现这一目标? 我已经能够(1)使用subdomain-fu,但我不知道如何让(2)工作。 任何指针(插件,gem,教程)等都会有很大帮助,我似乎无法找到任何指针。

谢谢!

域的原则与子域相同 – 查找域,映射到帐户。

详细信息将取决于您的托管将如何处理DNS。

我目前正在使用Heroku及其通配符服务。 在这种情况下,域名使用cname映射到我的Heroku应用程序托管的子域。 从这里我可以找出相关的帐户和详细信息。

编辑:我发现了一个更简单的方法: http : //www.arctickiwi.com/blog/7-host-and-domain-based-routing-in-ruby-on-rails

不完全是答案,但这是我能给予的最好的答案。 也许这对你也有帮助。

理想情况下, 来自transfs.com和subdomain-fu的这篇博文应该可以解决问题。 然而,我一直在尝试实现它,但它们似乎并没有很好地协同工作。

基本上,如果我不包括intiializer,子域路由工作正常。 如果我包含初始化程序,则子域路由会中断(所有内容都会被map.root捕获)。 我有一种感觉,它是在初始化程序中构建条件字符串的方式。 如果你能弄清楚它是如何破坏的,那么你将拥有一个有效的应用程序。

我的初始化程序:

 module ActionController module Routing class RouteSet def extract_request_environment(request) env = { :method => request.method } env[:domain] = request.domain if request.domain env[:host] = request.host if request.host 
env end end class Route alias_method :old_recognition_conditions, :recognition_conditions def recognition_conditions result = old_recognition_conditions [:host, :domain].each do |key| if conditions[key] operator = "===" if conditions[key].is_a?(Regexp) operator = "=~" end result << "conditions[:#{key.to_s}] #{operator} env[:#{key.to_s}]" end end result end end# end class Route end end

我的路线(仅用于开发)。 你会看到我的本地开发域名stiltify.dev。 对不起,我试着让它在这里看起来不错,但我无法让代码块看起来不错。 我把它放在贴纸上: http ://pastie.org/940619。

Ryan Bates的截屏中的评论部分非常有帮助,让我弄清楚subdomain => false以及他们遇到的其他错误。 仍然没有解决问题!