我正试图找出部署我的RAILS应用程序的方法(rails 3.2,apache,passenger)。该应用程序有两种不同的通信方式。
目前我不考虑平衡,该应用程序将在一台机器上运行。 我不能在443上使用可选的证书检查来组合这两种方法,因为这会影响在同一个apache实例上运行的其他应用程序,所以我相信我需要两个单独的端口用于该应用程序。
我应该如何管理这个?是否可以将apache配置为通过单独的vhosts指向同一个应用程序(可能通过代理单独乘客)?我是否应该将我的应用程序分解为两个单独的应用程序与一些共享库或引擎?我应该只部署两次指向同一个数据库(这将如何影响缓存)?
是否有更好的方法来区分连接端口,而不是检查客户端证书,如果是,则假定自动连接?
我也对能够快速完成工作的hacks以及构建类似这样的东西的正确轨道方式感兴趣。
由于
答案 0 :(得分:0)
在你的rails应用程序中,如果你希望行为以请求类型为条件,你可以像这样添加一个小帮助方法:
class ApplicationController < ActionController::Base
def api_request?
request.port == 443
end
end
然后在你的其他控制器中:
class UserController < ApplicationController
def index
@users = User.all
if api_request?
render :json => @users.to_json
else
render :action => :index
end
end
end