Loading... # 2026年重返Rails # 一、新闻概述 ## 1. 标题 2026年重返Rails:一次充满乐趣的开发体验回顾 ## 2. 发布时间 2026年3月5日 ## 3. 来源 Mark Dastmalchi-Round 的个人博客 markround.com # 二、核心内容 ## 1. 事件摘要 ### A. 主要内容 作者 Mark Dastmalchi-Round 在为他的乐队开发歌曲列表管理应用时,选择了 Rails 8 作为技术栈,并分享了重新使用 Rails 的开发体验和对 Rails 8 新特性的深入分析。 ### B. 核心亮点 - Rails 8 采用了"No-Build"前端开发方式,无需 Webpack 等复杂构建工具 - Solid 系列组件:Solid Cache、Solid Queue、Solid Cable,无需额外基础设施 - SQLite 生产环境支持成为默认配置 - 新的 Kamal 部署工具提供零停机部署体验 ## 2. 关键信息 ### A. 版本号 Rails 8 ### B. 涉及技术 - Ruby on Rails 8 - Stimulus + Turbo (Hotwire) - SQLite - Kamal 部署工具 - Solid 系列组件 ### C. 背景介绍 2025年 Stack Overflow 开发者调查显示,Rails 在框架流行度中排名第20,落后于主流 JavaScript 和 ASP.NET 框架。Ruby 语言也仅排在前十名之外,低于 Lua 甚至汇编语言。 # 三、详细报道 ## 1. 主要内容 ### A. 前端开发:No-Build 方式 Rails 8 采用了"无构建"的前端开发方法,开发者无需配置 Webpack、Yarn、npm 或其他 JavaScript 工具链。默认的 Hotwire 技术栈由 Stimulus 和 Turbo 组成。 Turbo 负责拦截链接点击和表单提交,交换页面片段以提供类似单页应用(SPA)的流畅体验,而无需实际构建 SPA。开发者可以在需要时添加少量 Stimulus JS 控制器来实现特定行为。 Stimulus 组件库通过简单的 importmap 命令管理: ```bash $ bin/importmap pin @stimulus-components/dialog ``` 这会从 JS CDN 下载包并将其添加到 vendor 目录,自动更新配置。使用时只需在控制器中注册即可在视图模板中立即使用。 ### B. 工作流:Rails 开发体验 Rails 的"约定优于配置"理念让开发变得高效。通过生成器可以快速创建模型、控制器和路由。例如,创建一个标签系统: ```bash $ bin/rails generate model Tag label:string color:string band:belongs_to ``` 这会自动生成模型文件: ```ruby class Tag < ApplicationRecord belongs_to :band end ``` ActiveRecord 会自动从数据库获取列名和定义,无需额外工作。路由配置也极其简单,一行代码即可生成完整的 RESTful 路由: ```ruby resources :tags ``` 开发者可以使用 curl 等工具快速测试 API: ```bash $ curl --silent -XGET \ -H "Authorization: Bearer <token>" http://localhost:3000/bands/4/tags/5.json | jq . ``` ### C. 后端改进:Solid 系列组件 Rails 8 引入了 Solid 系列组件,解决了需要额外基础设施的问题。 #### Solid Cache 使用数据库而不是内存存储进行缓存。现代存储性能足够用于缓存目的,这意味着可以缓存更多内容,同时也不需要 Redis 等额外层级。 片段缓存示例: ```erb <% cache "time_based", expires_in: 5.minutes do %> <!-- content goes here --> <% end %> ``` 或基于模型的缓存: ```erb <% cache ["band_dashboard", @band.cache_key_with_version, expires_in: 1.hour] do %> <!-- dashboard content here --> <% end %> ``` #### Solid Queue 无需 Redis 即可管理后台任务,默认使用数据库。开发环境只需简单设置: ```bash SOLID_QUEUE_IN_PUMA=1 bundle exec rails server ``` 任务声明同样简单: ```ruby # app/jobs/my_sample_job.rb class MySampleJob < ApplicationJob queue_as :default def perform Rails.logger.info "Yup, I still love Ruby..." end end ``` #### Solid Cable 用于实时 WebSocket 功能,同样默认使用数据库。作者主要用它来启用开发环境的 debugbar 工具栏。 ### D. 认证生成器 Rails 8 内置了认证生成器,为小型项目提供简洁的认证系统。相比 Devise 等功能丰富的解决方案,内置生成器更简单直接。不过对于复杂需求如 Omniuth 集成,Devise 仍有更多文档和指南支持。 ### E. SQLite 生产级支持 Rails 8 的 SQLite 配置默认值现在适合生产环境使用。database.yml 中的 pragma 设置包括: ```yaml production: adapter: sqlite3 database: storage/production.sqlite3 pragmas: journal_mode: wal synchronous: normal mmap_size: 134217728 cache_size: 2000 busy_timeout: 5000 foreign_keys: true journal_size_limit: 67108864 ``` 这些设置使 SQLite 成为中小型 Rails 应用的可行生产数据库,结合 Solid 组件,不再仅仅是本地开发工具。 ### F. 部署:Kamal Kamal 是 Rails 8 的默认部署工具,提供零停机部署体验。配置文件 deploy.yml 定义服务器角色: ```yaml servers: web: - web.rails.example.com job: hosts: - jobs.rails.example.com cmd: bin/jobs ``` 部署时 Kamal 会: - 构建容器并推送到注册表 - 在所有服务器上拉取镜像 - 启动新容器 - 健康检查通过后将流量路由到新容器 - 停止旧容器并清理 Kamal-proxy 作为轻量级反向代理处理流量切换,支持 Let's Encrypt 的 SSL 终止。 ## 2. 技术细节 ### A. Rails 架构演变 ```mermaid graph TB subgraph 前端 A[Stimulus 控制器] B[Turbo 驱动] end subgraph Rails 8 核心 C[ActiveRecord] D[路由系统] E[生成器] end subgraph Solid 组件 F[Solid Cache<br/>基于数据库] G[Solid Queue<br/>基于数据库] H[Solid Cable<br/>WebSocket] end subgraph 数据层 I[SQLite<br/>生产级配置] end subgraph 部署 J[Kamal] K[容器构建] L[kamal-proxy] end A --> B B --> D C --> F C --> G D --> E F --> I G --> I E --> J J --> K K --> L ```  ### B. 工作流程 ```mermaid graph LR A[构思模型] --> B[生成脚手架] B --> C[配置路由] C --> D[实现控制器逻辑] D --> E[curl 测试 API] E --> F[生成视图模板] F --> G[热重载开发] ```  ## 3. 数据与事实 ### A. 流行度对比 - JavaScript 框架:占前十主导地位 - ASP.NET:占前十主导地位 - Rails:排名第20 - Ruby 语言:57.9% 使用率(Python) ### B. 发布节奏 Rails 自 2010 年的 3.0 版本以来,每年持续发布新版本,保持稳定的发布节奏,是少数没有因项目规模扩大而降低发布频率的开源项目。 ### C. 生态活跃度 一些 Rails 相关项目如 Devise 显示发布活动呈下降趋势,自 2016 年 v4 版本发布后基本进入维护模式。不过 Shopify、SoundCloud、Basecamp 等大型企业仍在使用 Rails。 # 四、影响分析 ## 1. 行业影响 ### A. 技术趋势 Rails 8 的"No-Build"方法和 Solid 组件体现了简化开发体验的趋势。将缓存、队列、WebSocket 等功能集成到框架内部,减少对额外基础设施的依赖。 ### B. 竞争格局 尽管在流行度调查中落后于 JavaScript 框架,Rails 仍在持续创新,每年稳定发布新版本。其简化部署和降低基础设施依赖的方向可能吸引追求开发效率而非"最前沿"技术的开发者。 ## 2. 用户影响 ### A. 现有用户 对于长期 Rails 开发者,Rails 8 带来的改进(如 SQLite 生产级支持、Kamal 部署)显著降低了中小型应用的开发和部署复杂度。 ### B. 潜在用户 对于小型项目或独立开发者,Rails 8 提供了从开发到部署的完整解决方案,无需学习多种工具即可快速构建和上线应用。 ### C. 迁移建议 作者建议通过教程尝试 Rails,构建有趣的项目,最重要的是享受开发过程。 # 五、各方反应 ## 1. 官方趋势 Stack Overflow 开发者调查显示 Ruby 和 Rails 流行度有所下降,但 Rails 项目本身保持了每年稳定发布的节奏。 ## 2. 业内评价 ### A. 优势观点 - 开发体验极佳:约定优于配置、生成器工具高效 - 简化依赖:No-Build 前端、Solid 组件减少外部依赖 - 部署友好:Kamal 提供零停机部署 ### B. 挑战观点 - 社区活跃度下降:部分项目进入维护模式 - 文档更新滞后:一些指南和 Gem 多年未更新 - 技术小众:Ruby 语言流行度低于主流语言 ## 3. 用户反馈 ### A. 正面评价 作者本人对 Rails 8 的开发体验非常满意,表示这是多年来最有乐趣的开发经历。 ### B. 关注点 - 前端技能门槛:对于不熟悉现代前端开发的用户,仍有学习曲线 - 生态活跃度:部分周边项目维护不如从前活跃 # 六、相关链接 ## 1. 官方资源 - Ruby on Rails 官方文档 - Rails Guides ## 2. 相关文章 - SQLite 生产环境配置指南 - Kamal 部署文档 ## 3. 社区资源 - Stimulus Library - Stimulus Components *** ## 参考资料 1. [Returning To Rails in 2026](https://www.markround.com/blog/2026/03/05/returning-to-rails-in-2026/) 最后修改:2026 年 03 月 13 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏