Какие изменения здесь, если таковые имеются, потребуют повторной обработки постов с хештегами?
Будет ли требуемая повторная обработка выполнена автоматически при включении этой функции или потребуется явный шаг миграции для повторной обработки?
Какие изменения здесь, если таковые имеются, потребуют повторной обработки постов с хештегами?
Будет ли требуемая повторная обработка выполнена автоматически при включении этой функции или потребуется явный шаг миграции для повторной обработки?
После включения функции я просто выполнил rebake всех постов через rails.
У меня много постов, подавляющее большинство из которых не требует изменений. Я немного надеялся, что будет возможность пересобрать только затронутые посты — либо явно, либо неявно.
Похоже, повторная обработка может даже навредить старым постам:
Как избежать возможных проблем при повторной обработке всех постов?
Эта функция только что появилась. На данный момент в ней нет встроенной возможности пересоздать все посты, которые содержат упоминания категорий или тегов. Мы будем следить за мнением сообщества о том, что здесь необходимо, и/или какие решения люди придумают до этого момента.
Возможно, существует какой-то шаблон, который мы могли бы использовать для повторной обработки всех сообщений, кроме тех, что содержат встроенный контент (embed/onebox)?
Судя по всему, мы хотим перекомпилировать все посты, у которых обработанное представление содержит class="hashtag".
Я не думаю, что rebake_match поможет здесь, так как он работает с необработанным текстом, а в существующих задачах Rails нет опции для сопоставления с обработанным текстом. Поэтому, как мне кажется, потребуется реальное программирование — либо в консоли Rails, либо в новой задаче.
Что-то вроде
Post.where("cooked like '%class=\"hashtag\"%'").each do |p| p.rebake! end
Что-то очень похожее на это! Я только что успешно протестировал именно это на своём тестовом сайте.
Я думал об опции задержки для posts:rebake_match, но, вероятно, это не имеет значения.
Система, конечно же, настаивает на повторной обработке всех изображений в затронутых постах, что излишне, поэтому автоматическое исправление только для этого случая могло бы разумно избежать этого, но тем не менее есть способ двигаться дальше.
Возможно, я захочу реализовать это в обратном порядке и добавить задержку, если на сайте много затронутых постов.
@mcwumbly Теперь, когда 3.0 была анонсирована с этой функцией в качестве ключевой, что вы думаете о миграции, которая исправляет только текст без повторной обработки изображений? Или, alternatively, о миграции, позволяющей переобработать только затронутые посты с задержкой, чтобы не перегружать очереди повторной обработкой изображений?
@martin, не мог бы ты поделиться несколькими мыслями о том, как ты, возможно, подошёл бы к этой проблеме?
Коротко: я думаю, что в идеале люди хотят чего-то вроде:
И, возможно, также:
Вы уже можете сделать что-то подобное.
Post.where("cooked like '%class=\"hashtag\"%'").update_all(baked_version: 0)
Затем это будет обрабатываться в фоновом режиме через запланированные задачи.
Я ожидаю, что в течение следующего года мы повысим наш baked_version.
Я создам задачу Rake для выполнения того, что предложил @sam выше, которую смогут запустить пользователи с собственным хостингом.
Я не думаю, что это необходимо, поскольку мы уже сделали это настройкой по умолчанию для новых сайтов и вскоре полностью уберем эту опцию. Если кто-то захочет попробовать, он может включить настройку, вручную пересобрать несколько постов через интерфейс, а если результат не понравится — отключить настройку и пересобрать те же посты.
Хотя скоро выбора уже не будет.
Вы знаете, идея с цветными ссылками на категории всё ещё рассматривается?
Да, рассматривается, но мы считаем, что масштаб задачи больше, чем кажется на первый взгляд, и сначала ещё предстоит проработать ряд деталей дизайна, поэтому это произойдёт не сразу.
Круто, звучит отлично!
Я только что объединил rake-задачу для этого:
https://github.com/discourse/discourse/pull/19876
bundle exec rake hashtags:mark_old_format_for_rebake
Не могли бы вы предоставить полное руководство для новичков по использованию этой команды?
Есть ли способ изменять отдельные сообщения как пользователь (например, редактировать или сохранять с пометкой «малое изменение»)?
Спасибо.
Это обычный шаблон для задач Rake:
cd /var/discourse
./launcher enter app
bundle exec rake hashtags:mark_old_format_for_rebake
Это должно работать. Если вы являетесь сотрудником, вы можете нажать на гаечный ключ и пересобрать HTML.
Это сработало отлично, спасибо. Для моих целей это казалось менее рискованным, чем попытка выполнить задачу rake.