"undefined method `deprecated?' for nil:NilClass" при пересборке

В моем обновлении произошла ошибка

api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })

Пожалуйста, помогите мне это исправить.

Похоже, это именно та проблема. Я не могу представить её причину.

Я тоже :frowning: ОС обновлена, Discourse тоже

Вы используете Discourse на устаревшей версии Ubuntu. Вам необходимо перейти на актуальную установку Linux. Эта версия ядра слишком старая.

Я использую Ubuntu 22.04 LTS :slight_smile:, так что это ещё не версия с истёкшим сроком поддержки :wink: но, похоже, у меня ядро версии 3.x

Ubuntu 22.04 была выпущена с ядром 5.15, поэтому я подозреваю, что для достижения такого состояния была проведена очень нестандартная установка или обновление.

Я пытаюсь перейти на ядро не старше 5.15, но aufs больше не поддерживается, поэтому я перехожу на overlay2

Я бы порекомендовал просто запустить новый сервер, вместо того чтобы возиться с оверлеями.

Нужно ли мне загружать только последнюю резервную копию Discourse с текущего сервера? (Я не хочу потерять какие-либо данные)

Вам понадобятся только резервная копия и список плагинов из вашего файла app.yml. Если у вас очень старая установка, рекомендую запустить discourse-setup, а затем скопировать плагины.

На этой установке нет конкретных плагинов (на предыдущей минорной версии, кажется, они были; я регулярно обновляюсь).

Спасибо @pfaffman и @Falco

Наконец-то мне удалось:

  • обновить ОС и ядро до актуальных версий
  • пересобрать Discourse (включив SSL в app.yml)
  • переключиться на overlay вместо aufs (без потери данных)

Таким образом, https://community.museomix.org/ снова работает онлайн.

(Пока я воздержусь от переноса на другой droplet).

Спасибо сообществу Discourse! Я редко пишу здесь, но вы быстро отвечаете и помогаете :heart:

Ух ты. Это происходит и у меня прямо сейчас. Я нахожусь в

Добро пожаловать в Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-37-generic x86_64)

Информация о системе на Ср Янв 18 08:37:37 EST 2023

Нагрузка системы: 0.0 Использование памяти: 5% Процессы: 54
Использование /: 69.8% из 29.40GB Использование swap: 0% Пользователей в системе: 0

Построить график этих данных и управлять системой можно на:
https://landscape.canonical.com/

Доступен новый релиз ‘16.04.7 LTS’.
Выполните ‘do-release-upgrade’ для обновления до него.

Поможет ли выполнение последней строки решить мою проблему прямо сейчас, чтобы быстро вернуть сайт в строй, или мне стоит пропустить это и сразу перейти к настройке нового сервера, как рекомендуется здесь?

Сделайте резервную копию ваших данных Discourse перед :slight_smile:

Спасибо! Это и есть план. :slight_smile:

Кстати, я бы выбрал свежий Droplet с опцией восстановления, так как, на мой взгляд, это меньше подвержено появлению непредвиденных проблем.

Команда do-release-upgrade займёт некоторое время (в зависимости от скорости сети и диска) и может даже приостановиться, задавая вам вопросы. Скорее всего, вам придётся запускать её несколько раз, так как в вашем случае система сильно устарела. Высока вероятность, что чистая установка займёт меньше времени.

Но да, обязательно делайте резервные копии! И если возможно, сначала создайте новый сервер и настройте его работу, прежде чем отключать старый.

Я обновился до версии 16.04.7 LTS, и теперь появляется, по-видимому, другая ошибка. Я несколько раз пробовал запускать команду ./launcher rebuild app. Есть какие-то предложения? Сейчас изучаю логи…

Pups::ExecError: cd /var/www/discourse && git fetch --depth 1 origin tests-passed завершилась с ошибкой, код возврата #<Process::Status: pid 140 exit 128>
Место ошибки: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
Выполнение не удалось с параметрами {"cd"=>"$home", "hook"=>"code", "cmd"=>["git reset --hard", "git clean -f", "git remote set-branches --add origin main", "git remote set-branches origin $version", "git fetch --depth 1 origin $version", "git checkout $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
Загрузка не удалась с кодом выхода 128
** ЗАГРУЗКА НЕ УДАЛАСЬ ** Пожалуйста, прокрутите вверх и поищите сообщения об ошибках, возникших ранее; их может быть несколько.
Команда ./discourse-doctor может помочь диагностировать проблему.
7dd6293725af53fa4ac153d55183fb71c5ef5264b74d8d2267a653225a439127

Я бы поддержал @JammyDodger в использовании переноса экземпляра Discourse на другой сервер для обновления до свежего дистрибутива Debian / Ubuntu.

В противном случае вам придётся запустить супер-длинную команду do-release-upgrade пять раз, чтобы перейти на последнюю версию. Это того не стоит.

Ах, это очень плохо. Нужно было предупредить заранее. Мой сайт недоступен, и я не могу его восстановить прямо сейчас.

Есть ли способ сказать лаунчеру rebuild использовать старую копию?