только что попытался обновиться до (насколько я помню) бета-версии 9 через веб-интерфейс. К сожалению, это привело к ошибке, из-за чего я запустил rebuild app.
К сожалению, это тоже завершилось ошибкой, и я совершенно не понимаю, что мне теперь делать. Весь процесс снова и снова завершается следующим сообщением:
Tasks: TOP => db:migrate => db:load_config => environment
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)
I, [2025-08-20T08:47:30.655625 #1] INFO -- :
I, [2025-08-20T08:47:30.655914 #1] INFO -- : Завершение асинхронных процессов
I, [2025-08-20T08:47:30.655932 #1] INFO -- : Отправка сигнала INT для HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 47
I, [2025-08-20T08:47:30.655954 #1] INFO -- : Отправка сигнала TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 114
2025-08-20 08:47:30.656 UTC [47] LOG: получен запрос быстрого завершения
114:signal-handler (1755679650) Получен сигнал SIGTERM, планирование завершения...
114:M 20 Aug 2025 08:47:30.659 # Пользователь запросил завершение...
114:M 20 Aug 2025 08:47:30.659 * Сохранение финального снапшота RDB перед выходом.
2025-08-20 08:47:30.667 UTC [47] LOG: отмена всех активных транзакций
2025-08-20 08:47:30.671 UTC [47] LOG: фоновый рабочий "logical replication launcher" (PID 61) завершился с кодом выхода 1
2025-08-20 08:47:30.671 UTC [56] LOG: завершение работы
2025-08-20 08:47:30.672 UTC [56] LOG: начало контрольной точки: завершение работы, немедленное
2025-08-20 08:47:30.691 UTC [56] LOG: контрольная точка завершена: записано 3 буфера (0.0%); добавлено 0 WAL-файлов, удалено 0, переработано 0; write=0.014 с, sync=0.002 с, total=0.020 с; sync files=3, longest=0.001 с, average=0.001 с; distance=5 КБ, estimate=5 КБ
114:M 20 Aug 2025 08:47:30.728 * База данных сохранена на диск
114:M 20 Aug 2025 08:47:30.728 # Redis теперь готов к выходу, до свидания...
2025-08-20 08:47:30.731 UTC [47] LOG: система баз данных завершена
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершилась с ошибкой, код возврата #<Process::Status: pid 809 exit 1>
Место ошибки: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec завершилась с ошибкой с параметрами {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
Инициализация завершилась с кодом выхода 1
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и найдите предыдущие сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.
0155b0ee2e7b8a2a7481eed0f002871675973ab2295296f71b2c366b875f12cf
Достаточно ли этой информации для диагностики или нужно что-то ещё?
Я только что увидел это в разделе MAIL TEST, когда запускал discourse-doctor:
Plugin name is 'discourse-topic-voting', but plugin directory is named 'discourse-feature-voting'
/var/www/discourse/plugins/discourse-topic-voting/plugin.rb:22: warning: already initialized constant DiscourseTopicVoting::PLUGIN_NAME
/var/www/discourse/plugins/discourse-feature-voting/plugin.rb:22: warning: previous definition of PLUGIN_NAME was here
rake aborted!
ArgumentError: Invalid route name, already in use: 'category_none_votes' (ArgumentError)
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here:
https://guides.rubyonrails.org/routing.html#restricting-the-routes-created
raise ArgumentError, "Invalid route name, already in use: '#{name}' \n" \
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:649:in `add_route'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:2062:in `add_route'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:2033:in `decomposed_match'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:1997:in `block in map_match'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:1991:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:1991:in `map_match'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:1719:in `match'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:768:in `map_method'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:711:in `get'
/var/www/discourse/config/routes.rb:1346:in `block (4 levels) in <main>'
/var/www/discourse/config/routes.rb:1345:in `each'
/var/www/discourse/config/routes.rb:1345:in `block (3 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:903:in `scope'
/var/www/discourse/config/routes.rb:1337:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:903:in `scope'
/var/www/discourse/config/routes.rb:14:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:479:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:479:in `eval_block'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:461:in `draw'
/var/www/discourse/config/routes.rb:10:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:64:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:64:in `block in load_paths'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:64:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:64:in `load_paths'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:25:in `reload!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:52:in `block in updater'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/file_update_checker.rb:85:in `execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:34:in `execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/routes_reloader.rb:39:in `execute_unless_loaded'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application/finisher.rb:179:in `block in <module:Finisher>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:440:in `initialize!'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:416:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:567:in `block in run_tasks_blocks'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => emails:test => environment
(See full trace by running task with --trace)
discourse-feature-voting — это (очень) старое название плагина topic-voting, который теперь входит в состав ядра Discourse. Если вы удалите строку feature-voting из вашего файла app.yml и затем пересоберёте приложение, всё должно работать лучше