Rails: Мультиарендность с использованием Apartment и MySQL

Я создаю приложение (на рельсах 6.0.1) с помощью Apartment gem & Devise, но не могу понять, как заставить его работать с MySQL.

Я сделал всю свою конфигурацию и прочее, создал свою модель разработки пользователя и т. Д., Но когда я пытаюсь rails db:migrate, возникает ошибка:

Migrating  tenant
Error while connecting to tenant : Mysql2::Error: No database selected

Это означает, что я неправильно настроил квартиру для работы с моей базой данных 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

Редактировать: я использую ветку разработки из квартиры. Может быть, это проблема с Rails 6?

// Gemfile

gem 'apartment', github: 'influitive/apartment', branch: 'development'

person Perdixo    schedule 05.12.2019    source источник
comment
У вас все еще есть эта проблема? Установите для use_schemas значение false, так как вы используете mysql   -  person justcode    schedule 31.03.2020


Ответы (1)


Я думаю, к настоящему времени вы решили свою проблему, но для тех, кто пришел сюда, чтобы разобраться с мультитенантностью в Rails 6. Несколько вещей, которые я нашел сам:

person Fabian Prado    schedule 31.07.2020