问题描述
我正在将Apartment gem与Rails 5.2.1结合使用来创建多租户应用程序。在我的开发环境中,一切正常,但在设置生产环境时确实存在问题,因为托管提供程序仅允许我使用具有预定义名称(如usr_webxx_1,usr_webxx_2等)的MySQL数据库。
我的database.yml如下所示,因此usr_webxx_1是公用(租户无关)数据库。
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: usr_webxx_1
pool: 5
username: webxx
password: <password>
host: localhost
timeout: 5000
要配置不同的租户数据库,我按照Apartment GitHub页面“不同服务器上的租户”中的说明进行操作,因此我的Apartment配置如下所示:
if Rails.env.production?
config.tenant_names = {
'tenant_one' => {
adapter: 'mysql2',encoding: 'utf8',pool: 5,reconnect: false,timeout: 5000,host: 'localhost',database: 'usr_webxx_2',username: 'webxx',password: '<password>'
},'tenant_two' => {
adapter: 'mysql2',database: 'usr_webxx_3',password: '<password>'
}
}
else
config.tenant_names = lambda { Tenant.pluck :subdomain }
end
Rails.application.config.middleware.use Apartment::Elevators::Subdomain
我的租户表被排除在外
config.excluded_models = %w{ Tenant }
包含两个条目,名称= tenant_one,子域= tenant_one,name = tenant_two,子域= tenant_two
所有租户数据库的迁移工作正常,但是当我尝试通过http://tenant_one.domain.com访问浏览器中的租户时,生产日志显示以下错误消息: Apartment :: TenantNotFound(连接到租户tenant_one时出错:用户'webxx'@'localhost'对数据库'tenant_one'的访问被拒绝):
我尝试使用use_schemas配置参数,但是无论此错误设置为true还是false,似乎都没有区别。
有人对我有提示吗,我的配置有什么问题。预先感谢。
迈克尔
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)