1

我想通过更多的虚拟主机访问一个 Rails 应用程序。不同的虚拟主机在数据库、图像、样式表以及在某些情况下视图的布局方面会有所不同。对于通过不同的虚拟主机访问的一个 Rails 代码实现服务多个应用程序,您有什么建议?

已编辑

为了更好地说明我的想象,我添加了这些:

  • 我更喜欢 rails 来根据主机名区分哪些 db/styles/images/layouts 必须使用。
  • 可能有不同的 Rails 应用程序在运行,但在相同的代码之上。
  • 数据库连接可能在应用程序启动期间建立。

我想知道 Rails 应用程序应该识别主机的哪一层?它应该在中间件上、启动脚本中还是其他地方?

4

2 回答 2

1

对于数据库:

您可以在路由中设置特殊参数,例如:

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

然后使用 params[:client] 从 ApplicationController before_filter 手动调整 ActiveRecord::Base.establish_connection(...) (我已经这样做了)

在此处查看示例代码:ruby-forum

对于样式表,图像...:使用 apache o nginx 虚拟主机来区分公共/图像和其他(就像你应该做的那样直接为没有轨道的服务)并选择你从中选择它们的位置。(您可能需要 mod_rewrite o 等效项)

布局可能有点棘手,最好有一个通用的 erb,根据参数 [:client] 明智地加载部分。

我希望它有所帮助。

于 2010-01-13T13:48:35.173 回答
0

我不知道rails,但我知道如何在Django 中做到这一点。我怀疑核心逻辑是否如此不同。

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

从那时起如何改变各种事情取决于你。

于 2010-01-13T12:25:02.533 回答