Плагин, похоже, вызывает ошибку при обновлении Discourse:
I, [2025-01-04T22:51:50.065854 #1] INFO -- :
I, [2025-01-04T22:51:50.066464 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
2025-01-04 22:52:07.682 UTC [1886] discourse@discourse ERROR: null value in column "created_at" of relation "discourse_events_event_topics" violates not-null constraint
2025-01-04 22:52:07.682 UTC [1886] discourse@discourse DETAIL: Failing row contains (1, 1, 1239, null, events, null, null).
2025-01-04 22:52:07.682 UTC [1886] discourse@discourse STATEMENT:
INSERT INTO discourse_events_event_topics (topic_id, event_id, client, series_id)
SELECT ec.topic_id, ec.event_id, ec.client, ec.series_id
FROM discourse_events_event_connections ec
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled: (StandardError)
PG::NotNullViolation: ERROR: null value in column "created_at" of relation "discourse_events_event_topics" violates not-null constraint
DETAIL: Failing row contains (1, 1, 1239, null, events, null, null).
При отключённом плагине обновление проходит как положено.
Повторяющееся событие — это «серия» событий. Когда вы создаёте повторяющееся событие во внешнем сервисе, подключённом через этот плагин (например, в Google Календаре), плагин импортирует все события серии (в пределах заданных вами параметров импорта).
Если для импортированных событий настроена автоматическая синхронизация тем, эта настройка определяет, будет ли создана одна тема для всей серии событий или несколько. Если настройка включена, будет создана одна тема для серии, которая обновляется следующим событием серии после того, как предыдущее событие завершится. Если настройка отключена, для каждого события серии будет создана отдельная тема.
Но да, описание действительно нуждается в улучшении.
Привет, Энгус, я выполнил обновление на UKDHC Discourse, после чего веб-приложение Discourse перестало загружаться. После некоторых исследований выяснилось, что причиной этого стал плагин events. Мне пришлось отключить этот плагин, чтобы веб-приложение снова начало работать. Пожалуйста, проведи расследование и дай рекомендации — спасибо заранее. Франсуа
Uncaught Error: Could not find module `discourse/mixins/singleton` imported from `discourse/plugins/discourse-events/discourse/models/provider`
at loader.js:247:1
at h (loader.js:258:1)
at u.findDeps (loader.js:168:1)
at h (loader.js:262:1)
at u.findDeps (loader.js:168:1)
at h (loader.js:262:1)
at requireModule (loader.js:24:1)
at y (app.js:170:18)
at b (app.js:193:19)
at app.js:156:29
at g.start (app.js:167:1)
at HTMLDocument.<anonymous> (start-app.js:5:7)
at discourse-boot.js:13:12
at discourse-boot.js:1:1
В начале года мы отказались от использования миксина Singleton. Этот PR должен дать представление о том, как рефакторить класс для использования Singleton в качестве декоратора.
@angus, не могли бы вы взглянуть? Изменения должны быть минимальными: декоратор можно применить к RestModel.
Однако я заметил ещё одну небольшую проблему: когда плагин Events установлен, но не активен, он всё равно некорректно добавляет ссылки на расписание в верхние меню.
странно — у меня были отключены «Пользовательские ссылки в заголовке (иконки)», а на этом скриншоте они отображаются. Используется ли какое-то обратно совместимое значение по умолчанию?
До обновления Discourse у меня была та же проблема, что и раньше, а затем та же проблема повторилась после включения «Настройка ссылок в заголовке (Иконки)».
У меня в календаре было много событий, которые использует этот плагин, но я их уже отключил.
Мы считаем, что этот плагин сломан, и его следует пометить тегом broken.
Это согласуется с другими сообщениями:
Также стоит отметить: @Ethsim2 предложил добавить поддержку синхронизации через iCal-каналы как нативную функцию в плагине discourse-calendar (ссылка). В той теме уже два лайка от участников команды Discourse — поэтому, если вы тоже столкнулись с этой проблемой, стоит следить за ней или поддержать её.
Однако я не могу точно сказать, предоставит ли обновление этой библиотеки искомую функцию, на которую многие пользователи этого плагина могли полагаться или которую они умели исправлять.