我在Phusion Passenger,Nginx和Postgres 9.1.4上运行Rails 3.2应用程序。我已按照Postgresql's schemas中描述的方法将我的多租户应用移至this post(正在开发中):
由于这种方法似乎为每个请求全局设置了架构搜索路径(通过handle_subdomain,见下文),这对后台作业(via Resque)有何影响?
class ApplicationController < ActionController::Base
before_filter :handle_subdomain
def handle_subdomain
if @tenant = Tenant.find_by_subdomain(request.subdomain)
PgTools.set_search_path @tenant.id
else
PgTools.restore_default_search_path
end
end
end
如果我在Resque后台作业中设置搜索路径会花费相当多的时间(例如,删除S3上托管的一堆Paperclip图像)会发生什么?这可能会干扰对应用程序的请求,该应用程序在handle_subdomain中设置路径吗?
我应该修补ActiveRecord硬编码模式搜索路径吗?例如。 select * from“1”。“users”(“1”是架构路径)
感谢您的帮助。
答案 0 :(得分:1)
如果ActiveRecord只是发出“SET search_path = x”命令,那么就是设置每个会话的值,所以你应该没事。
事实上,如果你在显式事务中设置它,它将在事务结束时回滚,如果事务被回滚*。