2010-01-13 72 views
1

我想通过更多的虚拟主机访问一个轨道应用程序。不同的虚拟主机在数据库,图像,样式表和某些情况下的视图布局上会有所不同。对于通过不同的虚拟主机访问的一个rails代码来实现为多个应用程序提供服务,您有何建议?更多虚拟主机在一个轨道应用程序

编辑

指定什么我想象的更好,我添加这些:

  • 我宁愿轨道区分哪个DB /风格/图像/布局具有基于主机名来使用。
  • 可能有不同的rails应用程序正在运行,但在相同的代码上方。
  • Db连接可能在应用程序启动期间建立。

我想知道rails应用程序应该识别哪个主机?它应该在中间件上,在引导脚本还是其他地方?

回答

0

我不知道铁轨,但我知道我会怎么做在Django。我怀疑核心逻辑是不同的。

我会告诉服务器什么主机接受(包括通配符,如果我想要的),然后告诉我的webapp看看请求域(从web服务器传递)。

如何从这一点改变各种事情取决于你。

1

对于数据库:

可以在路线设置一个特殊的参数,如:

/:客户机/:控制器/:动作

,然后使用PARAMS [:客户]至手动调节的ActiveRecord :: Base.establish_connection(...) 从的ApplicationController的before_filter(我这样做了它的工作原理)

看到这里的示例代码:ruby-forum

对于样式表,图像...: 使用apache o nginx虚拟主机来分隔公共/图像和其他人(因为你应该这样做直接提供服务而不使用rails),并从那里选择它们。 (你可能需要mod_rewrite o相当于这个)

布局可能会有点棘手,最好有一个普通的erb根据params [:client]智能加载partials。

我希望它有帮助。

+0

谢谢@Fer的回答。我不希望在URL中显示客户端名称。我会很高兴看到rails从主机名解析客户端。然而,发散/公共声音很有趣。我应该检查一下。 – fifigyuri 2010-01-13 17:57:03

相关问题