跳到主要内容
那个漏了认证的端点,比 Rails 死不死更让我睡不着

那个漏了认证的端点,比 Rails 死不死更让我睡不着

今天也没搞懂
今天也没搞懂

· 阅读约 4 分钟

刷到 Rails World 那场 keynote 的讨论帖,翻了大概一个小时。

我连 Rails 都没碰过。这两个月前端后端都是 AI 帮我搭着走,rails new 我一次都没敲过。所以那几百条评论里关于 Ruby 会怎么死、Rust 会不会接管、Shopify 是不是 Rails 真正靠山的那些,我看得半懂不懂,夹生里的夹生。

但有一条把我钉在那了。

大意是他们团队用 AI 生成 API 端点,上线前才发现有个端点根本没有认证。AI 在每个子控制器里各写了一小段检查,唯独漏了那一个,没用框架自带的 before_action。

就这一句。

我第一反应是,这也太正常了吧。第二反应是,等一下,这不就是我现在每天在做的事吗。

我一直以为我的问题是语法不行、架构不懂、看到报错心慌。那栋楼里吵得最凶的其实不是这个,是两个都比我懂 Rails 十倍的人在吵:

一个说 Rails 这套默认约定对 AI 反而是最好的,框架把标准都替你想好了,代理只管写业务逻辑。另一个说恰恰相反,Rails 那些隐式的东西——插件能全局生效、只在配置和 bundle 里留个记号,跟 npm 那种不 import 就用不了的显式完全不是一回事——正好是 AI 最容易混淆的地方,所以他写了十二年的 Ruby,放下,回去写 JS/TS 了。

谁对,我没能力判断。

但漏了那个认证的端点,Rails 也好别的框架也好,人写也好 AI 写也好,结果都一样:跑得起来。测试可能还全绿。然后它是错的。

跑得起来和写对了,是两件完全不同的事。

这句话我打过几百遍(好吧没打过,心里默念过),直到看见那条评论,才第一次真的把它跟自己连起来。

因为我到今天为止的评判标准,说难听点,就是「它跑没跑起来」。

跑起来了我就不看代码了。真的。有时候会心虚地扫一遍,扫也是扫格式、扫命名,扫那些一眼能看出来的东西。真正藏着的——某处多了一个只需要一次却重复请求了三次的地方、某个本该共用的判断被抄进了五个分支、某个新加的过程没跟上别处的配套改动——这些我根本看不出来,因为我看的不是这个层次。

上周捣鼓一个小东西,让同桌帮我加了个功能。跑通了,我挺开心。第二天早上想起来去看它到底改了什么,翻了半天才反应过来,它在两个本来可以共用的地方各写了一套几乎一样的判断逻辑。当时脑子里第一句是「哦这样也行」,第二句才慢慢冒上来:「那以后我改其中一处,另一处怎么办」。

就这一下,后劲比那俩小时的开心大得多。

楼里还有人提,说这个时代框架的价值可能会下降,因为框架本来就是从人类写代码的实践里长出来的。这判断我大概率没法验证,听着也挺有道理。但我有个更小的问题——

如果我不写代码了,那还剩什么能力是我必须自己长的?

肯定不是把 AI 的每一行都看懂,那既不现实、好像也没必要。评论区有人说可以用几个对抗性的 LLM 交叉审查,但也承认最后还是很难说自己「理解」了那段代码。那答案到底是什么,我是真没搞懂。

现在能想到的,很笨的一条:专门盯那些「框架本来会替我做、但 AI 图省事自己重写了一遍」的地方。因为那种地方它不报错。它只是慢慢地、悄悄地绕过去了。

不过这个我也只是刚想到,还没来得及在哪试。

还有个类似的把我困住:评论区有人问,如果代码主要交给代理写,那还用什么快速做 MVP,回答是 Spring Boot 或者 Quarkus。这俩词我看着也是夹生。

换句话说,我这两个月学的东西,可能有一部分等我学完的时候已经过气了。这念头冒出来的时候有点泄气。但三周前的我大概会因为这个直接合上电脑,今天没有,今天我只是记下来,先不管。

进度条:想清楚一件一直模糊的事,比跑通十个小 demo 都难。今天没跑通任何东西,但知道该盯哪了。

谁要是也干过「跑通了就开心地不看代码了,第二天才回过神」这种事,评论区吱一声,让我知道不止我一个人这样。