Проблемы с выполнением скриптов импорта/миграции

Раньше я успешно мигрировал форум на Discourse с помощью пользовательского скрипта, но теперь при повторном запуске получаю следующую ошибку импорта:

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in `rescue in new_client': Мы не смогли найти вашу базу данных: discourse. Она должна быть указана в файле конфигурации базы данных, расположенном по адресу config/database.yml. (ActiveRecord::NoDatabaseError)

Чтобы решить эту проблему:

- Создали ли вы базу данных для этого приложения или удалили её? Возможно, вам потребуется создать базу данных.
- Изменилось ли имя базы данных? Проверьте, что в конфигурации database.yml указано правильное имя базы данных.

Чтобы создать базу данных, выполните:

        bin/rails db:create

Вот часть скрипта, которая вызывает ошибку:

require File.expand_path(File.dirname(__FILE__) + "/base.rb")

Я запускаю скрипт следующим образом:

./launcher enter app
cd /var/www/discourse
bundle exec ruby script/import_scripts/avatar.rb

Однако я не совсем понимаю суть ошибки: я могу подключиться к базе данных через sudo -u postgres psql discourse, что подтверждает существование базы данных «discourse». Кроме того, сайт работает нормально. При запуске rails c я также могу получить доступ к данным.

Можете ли вы подсказать, что здесь не так?

Discourse не может найти свою базу данных. Вам нужно это исправить. Это была стандартная установка или установка для разработки? Изучите соответствующее руководство и в первую очередь настройте работу Discourse.

Стандартная установка по инструкции: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Единственное, что я сделал (на что могу сейчас вспомнить) с момента, когда всё работало в последний раз, — это откатился к резервным копиям.

Что меня сбивает с толку в этой ошибке, так это то, что всё остальное работает. Сайт функционирует идеально. Сбой происходит только при запуске скрипта импорта.

И вы запускаете этот скрипт внутри контейнера?

Да, я использую ./launcher enter app, и у меня есть только одна конфигурация (app).

Ох. Извините. Вы всё это написали в первом посте; я плохо прочитал!

Не могу придумать объяснения. Может, перезагрузить?

Я перезагрузил систему, но это не помогло. Теперь я сталкиваюсь с той же проблемой и на локальной машине (локальный Docker)… что заставляет меня думать, что я каким-то образом неправильно выполняю команду…

И спасибо – я восхищаюсь скоростью ваших ответов и поддержкой!

Да, теперь я понял. Я выполнил скрипт от имени root, а не от пользователя discourse:

./launcher enter app
cd /var/www/discourse
su discourse
bundle exec ruby script/import_scripts/import.rb

Спасибо за поддержку @pfaffman <3

Хм. Возможно, что-то изменилось, так как я нахожусь на сайте, где я не запускал скрипты импорта, как это делалось в Discourse. Хорошая работа!