<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>willx (will)</title>
    <link>https://ruby-china.org/willx</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>发现 Rails 在 AI 时代好像挺适合做实验性质的项目的</title>
      <description>&lt;p&gt;最近组里在做一些数据生产端 AI 的探索，结果一个很直接的感受是：Rails 好像特别适合开发企业内部的 AI 实验项目，用起来贼爽。&lt;/p&gt;

&lt;p&gt;目前体感比较明显的点有两个：&lt;/p&gt;

&lt;p&gt;1 自带完善的测试框架，fixtures、test db 这些都很顺手，挺适合 vibe coding 的时候自己快速迭代&lt;/p&gt;

&lt;p&gt;因为这种项目本身就是实验性质，主打的就是一个又糙又快，老板恨不得 1 天之内就能试出结论，所以 Vibe Coding 基本是必不可少的。&lt;/p&gt;

&lt;p&gt;但问题在于，很多别的语言或框架，光是想让 AI 具备一套像样的自我验证能力，前面就得先折腾一轮。Rails 在这点上基本算是开箱即用，优势还是挺大的。&lt;/p&gt;

&lt;p&gt;2 Solid Queue 本地就能提供消息队列能力，碰到大模型 API 限流这类问题，处理起来也比较简单&lt;/p&gt;

&lt;p&gt;本地开箱即用、而且基本不需要额外依赖的消息队列，这一点其实也特别适合大模型相关场景。很多实验项目一开始并不想把基础设施铺得太重，能先在本机或者开发机上把流程跑通就已经很舒服了。&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Wed, 11 Mar 2026 21:35:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/44515</link>
      <guid>https://ruby-china.org/topics/44515</guid>
    </item>
    <item>
      <title>1</title>
      <description>&lt;p&gt;1&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Wed, 14 Jan 2026 20:38:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/44448</link>
      <guid>https://ruby-china.org/topics/44448</guid>
    </item>
    <item>
      <title>2025 大家体感就业形势如何</title>
      <description>&lt;p&gt;有的部门内部寒气逼人，有人也能在外面涨薪跳槽（非算法岗），似乎很割裂的样子&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Wed, 15 Oct 2025 20:11:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/44342</link>
      <guid>https://ruby-china.org/topics/44342</guid>
    </item>
    <item>
      <title>大家一般线上环境的 migration 在什么时候执行？</title>
      <description>&lt;p&gt;kamal 的部署流程中好像也没有单独提到 db:migrate 这种操作的执行时机，特别是在多台机器分布式部署的时候，官方文档里找了一圈也没看到有什么最佳实践。&lt;/p&gt;

&lt;p&gt;通常本地环境开发调试完毕之后，大家会在什么地方对线上环境做 migrate 呢？&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Thu, 17 Apr 2025 09:57:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/44133</link>
      <guid>https://ruby-china.org/topics/44133</guid>
    </item>
    <item>
      <title>国内有什么外企前后端研发去比较爽的？</title>
      <description>&lt;p&gt;在大厂已经快把身体干垮了&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Fri, 14 Feb 2025 18:51:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/44050</link>
      <guid>https://ruby-china.org/topics/44050</guid>
    </item>
    <item>
      <title>什么时候业务逻辑放在 concerns？</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/willx/fb2d5141-541a-45aa-bf5e-d138c352c5bf.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;在看 once 的 writebook 源码的时候，发现一些 model 的代码一会儿放在 concerns，一会儿放在对应的模型名的目录下。&lt;/p&gt;

&lt;p&gt;Positionable 只有 leaf 用了，也不是多个 model 的公用逻辑，为什么要放 concerns 里面呢？&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Thu, 09 Jan 2025 19:36:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/44011</link>
      <guid>https://ruby-china.org/topics/44011</guid>
    </item>
    <item>
      <title>现在用 importmap + stimulus 这套技术栈有什么好用的组件库？</title>
      <description>&lt;p&gt;看了一圈，感觉还是 bootstrap 组件最全；&lt;a href="https://www.stimulus-components.com/docs" rel="nofollow" target="_blank" title=""&gt;stimulus-components&lt;/a&gt; 组件非常少；tailwind 很多库还是得依赖 node&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Fri, 03 Jan 2025 16:53:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/44001</link>
      <guid>https://ruby-china.org/topics/44001</guid>
    </item>
    <item>
      <title>rails 的很多用法感觉是部落知识（Tribal knowledge），有什么权威的查询途径呢？</title>
      <description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Tribal_knowledge" rel="nofollow" target="_blank" title=""&gt;部落知识&lt;/a&gt; 可以理解为口口相传的知识。大量 rails 的用法和知识我是在 stackoverflow 的问题回答里面找到的，而不是某个官方文档中。&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; 甚至很多 API 的用法在官方文档中写的都不全，需要在互联网各个角落进行检索——或者自己努力翻看源码。&lt;/p&gt;

&lt;p&gt;所以大家都是什么途径获取这些知识的？&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Tue, 19 Nov 2024 13:42:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/43954</link>
      <guid>https://ruby-china.org/topics/43954</guid>
    </item>
    <item>
      <title>国内个人备案到底可以做什么功能？</title>
      <description>&lt;p&gt;理论上个人备案能做的系统非常少，“评论”、“登录”都不能做，更别提 AI 能力之类的。但是看了一些个人开发者发的链接，查了一下备案好几个都是个人备案，但是网站里面登录注册一应俱全。&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Mon, 14 Oct 2024 20:04:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/43912</link>
      <guid>https://ruby-china.org/topics/43912</guid>
    </item>
    <item>
      <title>rails7 之后怎么加载页面特定的 css？</title>
      <description>&lt;p&gt;我记得好几年以前创建页面会自动创建一个对应的 css 文件，现在的版本怎么没有了&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;p&gt;tailwind 确实很好用，但有时候 CSS 非常复杂，tailwind 涵盖不了，写全局又会导致 css 名很长去避免冲突&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Mon, 14 Oct 2024 15:43:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/43910</link>
      <guid>https://ruby-china.org/topics/43910</guid>
    </item>
    <item>
      <title>当你完成了一个很复杂的、包含大几千行代码的功能时，有人 CR 评论跟你纠结代码风格问题，该怎么回复他？</title>
      <description>&lt;p&gt;这就好像，我一本小说都写完了，你居然跟我说茴香豆的“茴”有四种写法，我的这种写法不好，请改掉。&lt;/p&gt;

&lt;p&gt;直接改吧，这人以后还更变本加厉，觉得你是在鼓励他；但是在评论里面回复他跟他讨论呢，他能跟你扯一天，又很浪费时间，合码进度又被耽搁了。&lt;/p&gt;

&lt;p&gt;备注：lint 风格检查已经通过了&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Sat, 17 Aug 2024 19:45:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/43852</link>
      <guid>https://ruby-china.org/topics/43852</guid>
    </item>
    <item>
      <title>Ruby 有没有类似 Java Jackson 那种将 class 和 json 互转的库？</title>
      <description>&lt;p&gt;例如 MQ、HTTP 请求，需要获取到很多结构复杂、字段很多、甚至&lt;strong&gt;嵌套几层&lt;/strong&gt;的 JSON。&lt;/p&gt;

&lt;p&gt;有的时候字段还乱七八糟的，snake-case、大驼峰、小驼峰、kebab-case 共存，需要互相转换。&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Fri, 05 Jul 2024 10:40:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/43796</link>
      <guid>https://ruby-china.org/topics/43796</guid>
    </item>
    <item>
      <title>如果面对较为复杂的业务时，需要创建一些实体类用来承载上下文和业务逻辑，但是并不需要存在 db 中，这样的实体类应该放在什么目录？</title>
      <description>&lt;p&gt;有没有社区推荐的最佳实践&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Mon, 17 Jun 2024 13:53:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/43750</link>
      <guid>https://ruby-china.org/topics/43750</guid>
    </item>
    <item>
      <title>国内的 Docker 镜像好像都没了，听说后续 npm 之类的镜像也要干掉，gem 会不会受到影响</title>
      <description>&lt;p&gt;6.6 上交 Docker 镜像突然关闭，说是收到上级通知，后续多个国内 Docker 镜像都接连关掉了……&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Sat, 08 Jun 2024 23:51:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/43729</link>
      <guid>https://ruby-china.org/topics/43729</guid>
    </item>
    <item>
      <title>行锁在日常开发中用的真的不多吗？Prisma 居然没有提供行锁的 API</title>
      <description>&lt;p&gt;新项目试了一下 Node 目前被推荐最多的 ORM prisma &lt;a href="https://github.com/prisma/prisma" rel="nofollow" target="_blank"&gt;https://github.com/prisma/prisma&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;然后发现这个框架居然没有提供行锁的任何 API，只能写 raw sql 来实现。&lt;/p&gt;

&lt;p&gt;但在个人认知里，其实行锁用的还比较频繁，特别是现在互联网公司非常喜欢在 mysql 里面存序列化后的 JSON，很多需要增量更新的情况，比如读取全量的 json 字符串，然后把新的字段更新进去，再保存。没有行锁的话，这个操作很容易就互相覆盖了。（虽然这是一种不太好的实践，但说实话在几家大厂都见过大量这种写法）&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Fri, 31 May 2024 11:45:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/43718</link>
      <guid>https://ruby-china.org/topics/43718</guid>
    </item>
    <item>
      <title>rails tailwindcss 有什么办法用第三方插件吗？</title>
      <description>&lt;p&gt;看文档里写的是 All the first-party plugins are supported.&lt;/p&gt;

&lt;p&gt;但是想用一些 tailwind 的组件库，比如 daisyui 这种，都是第三方依赖。&lt;/p&gt;

&lt;p&gt;我看 rails tailwindcss 他甚至没有依赖 node 看起来，官方 readme 也没写怎么用第三方插件。&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Thu, 09 May 2024 16:39:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/43681</link>
      <guid>https://ruby-china.org/topics/43681</guid>
    </item>
    <item>
      <title>做了一个职场恶劣/优质行为排名网站，无需登录直接上报～</title>
      <description>&lt;p&gt;地址：&lt;a href="https://wlbrank.icu/" rel="nofollow" target="_blank"&gt;https://wlbrank.icu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;服务器在香港所以打开比较慢&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/willx/dc64aa3a-f4ab-4008-8b92-8d83ff7ef10b.jpg!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Mon, 04 Mar 2024 18:52:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/43610</link>
      <guid>https://ruby-china.org/topics/43610</guid>
    </item>
    <item>
      <title>想省事儿还是得虚拟机或者 mac，试了一下 wsl，刚装好就发现浏览器不能上网了</title>
      <description>&lt;p&gt;看到一个一样的问题，客服也没给出解决方案：&lt;a href="https://answers.microsoft.com/zh-hans/windows/forum/all/%E5%90%AF%E7%94%A8wsl2%E5%90%8E%E5%9C%A8%E5%BC%80/948cbd3c-99b4-4bfe-a599-4fd3fe6a1f3f" rel="nofollow" target="_blank"&gt;https://answers.microsoft.com/zh-hans/windows/forum/all/%E5%90%AF%E7%94%A8wsl2%E5%90%8E%E5%9C%A8%E5%BC%80/948cbd3c-99b4-4bfe-a599-4fd3fe6a1f3f&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;浏览器无法直接上网，但是通过代理服务居然还能上，不知道 wsl 搞了什么奇怪的操作。&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Sun, 25 Feb 2024 09:29:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/43599</link>
      <guid>https://ruby-china.org/topics/43599</guid>
    </item>
    <item>
      <title>turbo frame 能实现 loading 状态和成功失败之后的 Toast 提示吗？</title>
      <description>&lt;p&gt;rt&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Thu, 22 Feb 2024 19:08:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/43595</link>
      <guid>https://ruby-china.org/topics/43595</guid>
    </item>
    <item>
      <title>试了试 GPTs 的纯对话创建，做了一个 Go 命名助手</title>
      <description>&lt;p&gt;地址：&lt;a href="https://chat.openai.com/g/g-JxHqcWE8N-go-naming-guru" rel="nofollow" target="_blank"&gt;https://chat.openai.com/g/g-JxHqcWE8N-go-naming-guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS：必须有 GPT plus 才能用&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;体验了一把无代码创建 GPTs，整个过程还是非常愉悦的。&lt;/p&gt;

&lt;p&gt;GPTs 的创建可以以对话形式进行，基本对话一般是下面几步：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;简单描述你想做一个什么 GPTs&lt;/li&gt;
&lt;li&gt;帮你生成一个名字&lt;/li&gt;
&lt;li&gt;帮你生成一个 Logo&lt;/li&gt;
&lt;li&gt;对你的 GPTs 进行更细致的描述&lt;/li&gt;
&lt;li&gt;提供一些参考资料、网址（这里我提供了 go 官方的 Effect Go、Google 的 Go 规范、Google 的 Go 最佳实践、Uber 的 Go 规范）&lt;/li&gt;
&lt;li&gt;对话风格设置&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;然后就有了一个领域专用的 GPT 啦。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/willx/5c4fa4b8-3782-4514-b7d5-04219c792de8.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>willx</author>
      <pubDate>Sun, 03 Dec 2023 20:01:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/43496</link>
      <guid>https://ruby-china.org/topics/43496</guid>
    </item>
  </channel>
</rss>
