Rails 3子域为现有的Rails应用程序

时间:2012-10-22 18:11:21

标签: ruby-on-rails-3 routing subdomain

我最近的任务是将现有的Rails 3应用程序分离为标准版和高级版。高级版本将具有所有现有功能,添加了新布局和新功能。理想情况下,我希望premuim用户通过为当前网址添加前缀为子网域来访问此网站,例如“premium.somesite.com”/我不想更改的网站的标准版本,仍然可以通过默认网址访问

如果可能的话,我想简单地为退出的视图和控制器添加一些逻辑,以确定如何处理请求是否正在使用子域。

我尝试跟踪Railcast subdomains in rails 3,但他在博客模型和数据库属性的上下文中使用子域,因为我希望我的应用程序范围内。子域名甚至可以实现吗?我该如何开始?


我尝试了什么:

在乘客使用的apache httpd.conf文件中添加了一个额外的VirtualHost:

<VirtualHost *:80>
  ServerName premium.mydomain.com
  DocumentRoot /somewhere/../myapp
  <Directory /somewhere/public>
    Allow from all
    Options -Multiviews
  </Directory>
</VirtualHost>

在我的routes.rb

中添加了以下内容
class PremiumSubdomain
  def self.matches?(request)
    request.subdomain == "premium"
  end
end

MyApp::Application.routes.draw do    
  constraints(PremiumSubdomain) do    
    #all of my routes...    
  end    
end

会发生什么:

尝试使用高级子域导航到我的站点会导致找不到域,将约束添加到我的route.rb会阻止应用程序的其余部分在我的默认URL上呈现任何内容。

1 个答案:

答案 0 :(得分:0)

所以事实证明,虽然我确实已经在apache上配置了所有内容,但我们在DNS服务器上使用了第三方,所以这只是为我们的子域添加记录而其他一切都是桃子的。