Rails : 使用公寓和 MySQL 的多租户
Rails : Multi-tenancy using Apartment and MySQL
我正在使用 Apartment gem & Devise 创建一个应用程序(在 rails 6.0.1 上),但我不知道如何使用 MySQL..
我已经完成了我所有的配置和东西,生成了我的用户设计模型等。但是当我尝试 rails db:migrate
时发生错误:
Migrating tenant
Error while connecting to tenant : Mysql2::Error: No database selected
意思是我没有正确配置 Apartment 以使用我的 Mysql 数据库,对吗?我找不到关于如何正确连接它的任何信息(我可以用初学者的术语理解)。我的 database.yml
有以下内容:
// database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: myusername
password: mypassword
socket: /tmp/mysql.sock
(...)
请注意,我的 rails 应用程序中有正确的用户名和密码 :)
一切正常,直到我尝试创建多租户的东西。这意味着问题可能来自我的 config/initializers/apartment.rb
文件?
这是现在的样子
// config/initializers/apartment.rb
require 'apartment/elevators/subdomain'
Apartment.configure do |config|
config.excluded_models = %w[User]
config.tenant_names = -> { User.pluck :subdomain }
config.use_schemas = true
end
Rails.application.config.middleware.use Apartment::Elevators::Subdomain
Edit : 我正在使用 Apartment 的开发分支。可能是 Rails 6 的问题?
// Gemfile
gem 'apartment', github: 'influitive/apartment', branch: 'development'
我猜你现在已经解决了你的问题,但对于那些来这里寻找处理多租户问题的人来说 Rails 6. 我自己发现的一些事情:
- 公寓不支持Rails6.
- 连公寓的开发商doesn't recommend to use his multi schema approach. They recommend citusdata's activerecord-multi-tenant gem
- 我发现this post对我的疑惑很有帮助。
我正在使用 Apartment gem & Devise 创建一个应用程序(在 rails 6.0.1 上),但我不知道如何使用 MySQL..
我已经完成了我所有的配置和东西,生成了我的用户设计模型等。但是当我尝试 rails db:migrate
时发生错误:
Migrating tenant
Error while connecting to tenant : Mysql2::Error: No database selected
意思是我没有正确配置 Apartment 以使用我的 Mysql 数据库,对吗?我找不到关于如何正确连接它的任何信息(我可以用初学者的术语理解)。我的 database.yml
有以下内容:
// database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: myusername
password: mypassword
socket: /tmp/mysql.sock
(...)
请注意,我的 rails 应用程序中有正确的用户名和密码 :)
一切正常,直到我尝试创建多租户的东西。这意味着问题可能来自我的 config/initializers/apartment.rb
文件?
这是现在的样子
// config/initializers/apartment.rb
require 'apartment/elevators/subdomain'
Apartment.configure do |config|
config.excluded_models = %w[User]
config.tenant_names = -> { User.pluck :subdomain }
config.use_schemas = true
end
Rails.application.config.middleware.use Apartment::Elevators::Subdomain
Edit : 我正在使用 Apartment 的开发分支。可能是 Rails 6 的问题?
// Gemfile
gem 'apartment', github: 'influitive/apartment', branch: 'development'
我猜你现在已经解决了你的问题,但对于那些来这里寻找处理多租户问题的人来说 Rails 6. 我自己发现的一些事情:
- 公寓不支持Rails6.
- 连公寓的开发商doesn't recommend to use his multi schema approach. They recommend citusdata's activerecord-multi-tenant gem
- 我发现this post对我的疑惑很有帮助。