Плагин Discourse Solved выдаёт ошибку 500

Недавно я обновил версию Discourse, и все мои плагины актуальны.
После обновления при попытке пометить ответ как решение возникает ошибка 500.

Ниже приведены детали ошибки, которые я вижу в консоли.

    Failed to load resource: the server responded with a status of 500 ()
_application-ed0ac69…88e883e0db.js:11141 SyntaxError: Unexpected token < in JSON at position 0
    at Function.parse [as parseJSON] (<anonymous>)
    at n (_application-ed0ac69…88e883e0db.js:11137)
    at e.popupAjaxError (_application-ed0ac69…88e883e0db.js:11180)
    at E (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at w (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at g (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at t.invoke (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t._end (ember_jquery-8e338e1…8f98e499a037a9.js:1)
ember_jquery-8e338e1…8f98e499a037a9.js:1 Uncaught 
Object
jqXHR: {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
textStatus: "error"
errorThrown: ""
_discourse_displayed: true
__proto__: Object

Установлены ли у вас неофициальные плагины? Работает ли сайт в безопасном режиме только с официальными плагинами и темами?

Да, у меня установлен неофициальный плагин, и я не проверял работу в безопасном режиме (не знаю, как это сделать :noobface:)

Однако я просмотрел логи, и там было следующее сообщение:
ArgumentError (unknown keyword: duration) /var/www/discourse/app/models/topic.rb:1138:in 'set_or_create_timer'

(Трассировка стека, если интересно: https://pastebin.com/chKtDTeL.)

Затем я зашел в настройки, связанные с решением тем, и установил значение «Автозакрытие через (часы)» на 0 (предыдущее значение было 72). Теперь всё работает, но я очень хочу использовать эту функцию. Есть ли какая-то помощь?

Просто перейдите по адресу /safe-mode на вашем сайте, чтобы получить доступ к настройкам безопасного режима. Выглядит это так:

Хорошо, кто-то из нашей команды уже пробовал это:
· Отключение неофициальных плагинов (например, нашего плагина значков) не решило проблему.
· Отключение нашей темы (например, пользовательского JavaScript) не решило проблему.
· Отключение неофициальных плагинов и темы вместе не решило проблему.
Используется безопасный режим.

Не пробовал отключать все плагины, потому что, как вы знаете, это отключит и исправленное решение :grin:

У вас есть какие-либо плагины для павильонов?

Похоже, это связано с тем, что я обнаружил в логах. Последнее обновление от автора плагина — это

Никаких плагинов от pavilion

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

Я думаю, я понял проблему. Мы находимся на стабильной версии (не на стандартной тестовой с пометкой tests-passed), где изменения, касающиеся параметра ‘duration’, ещё не применены.

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

Привет, у меня та же проблема:

Версия Discourse:

Мои расширения:

Я пробовал в безопасном режиме, проблема та же.

Лог:
image

Сообщение

ArgumentError (неизвестное ключевое слово: duration)
/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'

Стек вызовов

/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'
/var/www/discourse/plugins/discourse-solved/plugin.rb:126:in `accept_answer!'
/var/www/discourse/plugins/discourse-solved/plugin.rb:206:in `accept'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/base.rb:196:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rescue.rb:22:in `process_action'

Спасибо за помощь.

Привет всем,
Есть время на идею?

Вы используете конкретную версию Discourse, в которой, вероятно, функция не была перенесена обратно. Плагин Solved работает корректно с последней веткой tests-passed, поэтому рассмотрите возможность обновления до неё.

Почему?
У меня нестабильная версия.

Так что, если я правильно понимаю, стабильная версия не подходит для продакшн-сервера Discourse???

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  version: stable

Это хорошо, но в целом версия очень старая и лишена новых функций. Вам действительно стоит использовать тесты-passed, так как она достаточно стабильна и включает все новые функции и улучшения производительности.

Ок, спасибо за ваш ответ.

Вчера я внес исправление. Не могли бы вы обновить плагин discourse-solved и подтвердить, что проблема для вас решена?

Привет, @kris.kotlarek,
мне подходит эта версия:

Спасибо