在 Rails 8 中构建博客的最佳方法:从 Markdown 到 Action Text
Source: Dev.to

介绍
开发者的悖论
作为开发者,我们希望对博客拥有完全的控制权,并展示自己的技术栈。然而,构建自定义后台面板往往会拖慢内容创作。请选择一种与您写作方式相匹配的架构。
1. “Indie Hacker” 方式:Markdown + Git
工作原理
将文章以 .md 文件存放在 app/contents/posts/ 中。每个文件使用 YAML front‑matter 来保存元数据。
技术栈
- FrontMatter – 解析 YAML 元数据。
- Redcarpet 或 CommonMarker – 将 Markdown 转换为 HTML。
- Rouge – 为代码块提供语法高亮。
为什么它很棒
- 版本控制 – 文章存放在 Git 中;
git revert可以撤销错误。 - 速度 – 无需数据库查询;可将解析后的 HTML 缓存在内存或使用 Solid Cache。
- 可移植性 – 如果离开 Rails,内容仍然是标准的 Markdown 文件。
2. “Omakase” 方式:Action Text + Trix
工作原理
使用 Rails 内置的富文本属性。
# app/models/post.rb
class Post < ApplicationRecord
has_rich_text :content
end
为什么它很棒
- 图片处理 – Active Storage 管理上传、尺寸调整和嵌入。
- 编辑器 – Trix 提供简洁的拖拽体验。
- 集成 – 与 Rails 生态系统(例如 ActionBroadcasting)无缝配合。
需要注意的点: 内容以 HTML 片段的形式存入数据库,这使得全局查找‑替换或迁移相较于 Markdown 稍显繁琐。
3. “Pro” 方式:Rails + Headless CMS
技术栈
- 外部 CMS – Contentful、Strapi,或 Spina CMS(Rails 原生引擎)。
- 业务逻辑 – Rails 通过 CMS API 获取内容并渲染。
为什么它很棒
- 关注点分离 – 无需自行构建图片上传、预览或草稿/发布工作流;CMS 已经提供这些功能。
- SEO 工具 – 内置 SEO 字段和校验。
任意 Rails 博客的“必备”清单
1. RSS Feed
提供 /feed.rss 路由(例如使用 jbuilder)。RSS 在内容分发中仍然非常有价值。
2. Meta Tags(meta-tags gem)
添加 OpenGraph 与 Twitter Card 标签,使文章在社交平台上展示良好。该 gem 让你可以动态设置标题、描述和社交图片。
3. 合理的缓存
博客阅读量大,属于读‑重型应用。
- 对文章正文使用 Fragment Caching。
- 利用 Solid Cache(Rails 8)在部署之间保持缓存持久化。
总结:该选哪一种?
- Markdown – 适合热爱 Git、想避免使用数据库的独立开发者。
- Action Text – 适合追求完整 “Rails 风格” 体验、需要在浏览器中编辑的场景。
- Spina 或其他 Headless CMS – 当你需要一个精致的后台 UI 而不想自行构建时的最佳选择。
最好的博客是你真正愿意去写的博客。选择一种不妨碍你创作的方式吧。
你是在构建自定义博客还是使用生成器?在评论里分享你的链接吧! 👇