我正在使用这个apartment红宝石。
我在application.rb文件中添加了这个:
config.middleware.use 'Apartment::Elevators::Subdomain'
当我尝试在浏览器网址中输入此信息时,测试网址为:' test.domain.local:3000'子域名测试' PostgreSQL中不存在schema,我看到了这个错误
Apartment::SchemaNotFound (One of the following schema(s) is invalid: test, "public")
我知道这是gem的正常行为但想要捕获此异常并将用户重定向到其他页面,我该怎么做?
答案 0 :(得分:12)
这就是我所做的:
在lib / rescued_apartment_middleware.rb下创建文件
module RescuedApartmentMiddleware
def call(*args)
begin
super
rescue Apartment::TenantNotFound
Rails.logger.error "ERROR: Apartment Tenant not found: #{Apartment::Tenant.current.inspect}"
return [404, {"Content-Type" => "text/html"}, ["#{File.read(Rails.root.to_s + '/public/404.html')}"] ]
end
end
end
并按照以下行添加到您的公寓初始化程序文件中:
require 'rescued_apartment_middleware'
Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain'
Apartment::Elevators::Subdomain.prepend RescuedApartmentMiddleware
这就像一个魅力! (使用ruby 2.1和Rails 4.1测试)