Rails Rails World 2024 Opening Keynote - David Heinemeier Hansson

Rei · 2024年09月27日 · 最后由 poppy12 回复于 2024年10月14日 · 1037 次阅读

https://www.youtube.com/watch?v=-cEn_83zRFw

Summary:

Progress is our path,
Complexity builds the bridge,
Simplicity waits.


Rails 8.0

  • Authentication
  • Propshaft
  • Solid Trifecata
  • Thruster
  • Kamal 2

Rails 8.1

  • Action Notifier
  • Active Record Search
  • House (MD)

DHH 的演讲真刺激

后面讲 high 起来了 fuck 不断。

Rails 8 的思路还是不错的。一方面减少外部依赖:Solid Cache 如果真如 DHH 所述的那样,性能和 Redis 不相上下,那应用里多个 sqlite 文件做缓存真是一个很好的解决策略;Solid Queue 终于弥补了 Rails 没有默认 Queue 的问题;Thruster 可以在但应用场景下替换 Apache / Nginx。另一方面解决实际痛点,Kamal 2 的 5 分钟 Demo 还是很惊艳的。

Kamal 2,昨晚折腾了一晚上没部署起来。本地虚拟机测试的好得很,一上线部署就无法启动,不断的重启。查了各种资料,折腾到我早上 10 点了,改回 kamal 1.9 部署了。

canonpd 回复

刚开始没搞 Thruster,在 3000 启动服务,失败。后来给项目加了 Thruster,在 80 启动,继续失败。没脾气了,今天继续。

canonpd 回复

看下 docker 的 log,应该有错误提示。

canonpd 回复

Rails 增加了一个配置在应用层忽略 SSL,让前面的代理处理,避免重定向:

# Assume all access to the app is happening through a SSL-terminating reverse proxy.
 # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
 # config.assume_ssl = true

Kamal 2 新增了 kamal proxy 处理 SSL,不用 thruster 处理证书(而且它在代理后,处理不了部分证书校验)。不过 thruster 还可以用来处理文件传输之类,所以在 Rails 8 默认的 dockerfile 内。

Kamal 1 部署一个小时应该是 docker 缓存没做好,而且网络有问题。以前我部署一个应用也是 5~6 分钟。

Rei 回复

感谢指正。

1 反复安装是什么毛病就不清楚了,我没有对默认 dockerfile 做很大的修改。2 的 dockerfile 与 1 的基本没差别。但是 2 里,再也没出现反复安装 gem 的情况了。

1 里,我还有个问题,会卡死在 RubyZip 3.0,必须安装 ruby 3.2.4,或以下版本才行。

2 里,我已经升到 3.3.5 最新版了,并开启了 yjit。

总而言之,言而总之。用 2 就对了,这次的版本对单机部署也很友好。之前在 1 里。为了实现单机部署,额外自己加了好多配置。

一下子框架可以替代不少小基建了。不过升级起来的工作量不少啊。

Solid 系列看起来很不错,只是 sidekiq 配合 redis 已经很成熟的方案了,现有用户迁移需求不大。

kamal 部署工具并没有让布署变得更简单,docker 是个大坑。能看到 rails 在减少部署复杂度方面做的努力,但布署真的是一件复杂的事情,靠工具没办法做到一劳永逸,只有用上了 heroku、vercel 那样专门公司做的服务才能让布署变的享受起来。

看出来了,Rails 8 的整体方向应该是提升 DX,减少依赖降低新手入门门槛(毕竟新开发者越来越少了)。

kamal 目前文档太少了,用的人也少,遇上很多莫名其妙的问题无从下手,自己做一些定制化配置也麻烦,kamal1,kamal2 都尝试过,最终还是放弃了,还不如用 capistrano 或 ansible 部署。

fantasticfears 回复

虽然 DHH 还是代表 rails 官方,但我觉得太多存量的 rails 应用似乎并没有啥特别大的理由用 solid 系列新 gem 替换已有的成熟方案,无论如何欢迎 rails 8 的发布。

ericguo 回复

对新项目 新人,要简单上手做项目来说挺友好的

ericguo 回复

是的,一切正常的话没啥必要。我还是想看有没有人做迁移的实践,以及有什么问题。

xrlin 回复

Kamal 2 有任何问题欢迎来问我。。。从 1 时代就开始用,问题不大。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号