亲爱的 Discourse 开发者们:
主题:rake posts:rebake(未来功能)
rake posts:rebake # 使用最新 Markdown 更新每篇帖子
rake posts:rebake_match[pattern,type,delay] # 重新渲染匹配字符串/正则表达式的所有帖子,并可选择延迟循环
A. 希望能提供一个重新渲染功能,允许用户仅在话题 ID(或帖子 ID)大于某个整数时进行重新渲染。
rake posts:rebake_incremental['topic_id', 34567] # 若 topic_id >= 34567 则重新渲染
rake posts:rebake_incremental['post_id', 364123] # 若 post_id >= 364123 则重新渲染
理由:
(1) 在进行重新渲染时,尤其是在处理迁移任务时,开发者可能已经迁移了某些话题或帖子;但随后当他们更新迁移以包含新帖子时(例如在活跃论坛中更新迁移),目前似乎没有方法(至少我目前所知)指定渲染的起始点。模式匹配并非为此设计(除非我理解有误)。
(2) 在处理将旧论坛文本精细调整以适配 Discourse 的迁移任务时,例如调整旧论坛中的特殊字符以在编程论坛中与 Markdown 兼容,或调整旧论坛中的递归 BBCode,重新渲染最后 1000 篇帖子(而非整个数据库)是非常有用的。
B. 比 A 更灵活(指定比较运算符)
rake posts:rebake_incremental['topic_id', '>=', 34567] # 若 topic_id >= 34567 则重新渲染
rake posts:rebake_incremental['post_id', '<', 364123] # 若 post_id < 364123 则重新渲染
通用格式:
rake posts:rebake_incremental[target, operator, id]
其中:
- target 为 topic_id 或 post_id
- operator 为算术比较运算符
- id 为整数,可以是 topic_id 或 post_id
注意:迁移任务通常需要多次迭代才能完成,尤其是原始论坛中帖子的文本和编码转换到 Discourse 时。许多在非 Markdown 论坛中可用的字符,在迁移到基于 Markdown 处理的论坛时会导致问题。如上文所示,对重新渲染过程拥有更多控制权将大有裨益。