单轨代码,域名解决的多个应用程序

时间:2011-03-02 08:40:13

标签: ruby-on-rails-3

我有一个rails应用程序,我想服务于域名区分的不同站点。虽然代码相同,但配置不同。可能所有应用程序的数据都将放在一个具有不同表前缀的数据库中。我正在使用rails3并且可以使用定义表前缀(虽然我也没有检查rails2)。

我试图找到关于这个主题的类似问题,虽然我发现了一些负面的答案,告诉rails不是为此设计的,但是在rails 3主要发布之后,也许它有可能......因为它变得更加模块化,更清洁,我非常感激。

我目前解决上述问题的想法如下:

  1. 当请求到达时,中间件会捕获域名
  2. 根据域名识别前缀,但自然只针对实际请求
  3. activerecord的table_prefix阅读器将被更改,而不是返回为实际域定义的前缀
  4. ..可能会有一些其他配置需要反映实际域
  5. 我想问一下,尝试是否值得努力。我应该认识到可能存在的陷阱是什么?或者我已经尝试解决这个问题的宝石了吗?你会如何解决这个问题?

    感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你真正需要关注的是Rails如何通过Rack管理call Rack允许您将有效的Web请求连接到任何 Rack兼容的端点,就像另一个Rails 3应用程序一样。您将数据作为:xml:json传递给其他应用程序。

我不确定如何在不使用两个应用程序中的中间模型复制数据结构的情况下这样做。缺点是您创建并传输了相同数据的多个副本,因此如果您处理大量信息,那将会非常慢。

答案 1 :(得分:1)

你为什么要打扰?只需创建单独的数据库并为不同的配置运行单独的独角兽实例,并为自己省去痛苦和麻烦。