Rails, жемчужина квартиры в производственной среде, сообщение об ошибке: арендатор не найден

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Я использую жемчужину квартиры с Rails 5.2.1 для создания приложения с несколькими арендаторами. В моей среде разработки все работает нормально, но у меня есть проблемы с настройкой производственной среды, потому что мой хостинг-провайдер разрешает мне использовать базы данных MySQL только с предопределенными именами, такими как usr_webxx_1, usr_webxx_2 и так далее.

Моя база данных.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 «Арендаторы на разных серверах», так что моя конфигурация квартиры выглядит следующим образом:

   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',
            encoding: 'utf8',
            pool: 5,
            reconnect: false,
            timeout: 5000,
            host: 'localhost',
            database: 'usr_webxx_3',
            username: 'webxx',
            password: '<password>'
        }
    }
  else
    config.tenant_names = lambda { Tenant.pluck :subdomain }
  end

Rails.application.config.middleware.use Apartment::Elevators::Subdomain

  

Моя таблица арендаторов, которая исключена

 config.excluded_models = %w{ Tenant }
  

содержит две записи name = tenant_one, поддомен = tenant_one и name = tenant_two, поддомен = tenant_two

Миграция всей базы данных арендатора работает должным образом, но когда я пытаюсь получить доступ к арендатору в браузере с помощьюhttp://tenant_one.domain.com в рабочем журнале отображается следующее сообщение об ошибке: Квартира::Арендатор не найден (Ошибка при подключении к арендатору tenant_one: пользователю ‘webxx’@’localhost’ отказано в доступе к базе данных ‘tenant_one’):

Я попытался поиграть с параметром конфигурации use_schemas, но, похоже, нет никакой разницы в отношении этой ошибки, установлено ли для нее значение true или false.

У кого-нибудь есть подсказка для меня, что не так с моей конфигурацией. Заранее спасибо.

Майкл