Какая повторная сборка требуется для нового стиля автозаполнения?

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

Будет ли требуемая повторная обработка выполнена автоматически при включении этой функции или потребуется явный шаг миграции для повторной обработки?

После включения функции я просто выполнил 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.