用 active job + action cable 实现过一版,如果用 solid cable 会产生很多数据库写入,又不想增加 redis 依赖,所以没用这个方案。
SSE 还有一个好处是终止操作比较好做,客户端断开 SSE,服务端也停止处理就行了。如果是后台 job 就需要跟踪 job id。
我感兴趣 async gem 能不能解决,打算在功能开发完之后再研究。
同样的逻辑,AI 生成的 Ruby 代码少,方便 review,这就是 Ruby 的优势。
编程语言是写给人看的,如果有一天 AI 直接生成机器码不用 review,那么就不需要编程语言了。
楼上都没看内容啊,主题讨论的是“Ruby 写 AI 应用有没有戏”
我最近在写一个 AI 聊天应用,遇到一个问题是要处理流式响应,在 Rails 里为了不阻塞请求需要用线程处理,成本较高。对异步生态的需求比以前更迫切了。
赞👍
公司名和工作地点?
默认 entrypoint 是带 -e 的,所以除了执行迁移的容器其他容器会启动失败。然后 kamal 会隔几秒重试启动,直到超过重试次数。容器启动后健康检查通过才会替换旧容器。
如果有超长时间的迁移,可以关注维护模式这个新功能(未发布) https://github.com/basecamp/kamal/pull/1497
我没验证过,也许 entrypoint 里面失败不影响启动?
确认全局走梯子了没有?
migration 过程有数据库锁,不会重复执行。 https://github.com/rails/rails/pull/22122
我的 kamal 生产环境配置 https://geeknote.net/Rei/posts/3232
build 的时候失败可以把 build 服务器放在境外,然后 push 到境内的 register(例如 aliyun)。
在境内 build 除了 docker 还有 deb,rubygem,npm 的问题,很麻烦。
我是自建 docker 镜像解决的 https://geeknote.net/Rei/posts/3214
37signals 喜欢用 concerns 而且玩得溜。
我是只有公用逻辑才放 concerns。
rails 6 -> 7 使用的 turbo 有变化,用的包不同,属性从 data-* 换成了 data-turbo-*。搜论坛可能会搜到旧的内容。
不知道你看的是哪个版本教程。现在推荐看英文官方的教程 https://guides.rubyonrails.org/ ,目前版本是 8.0.1。要看中文的可以用翻译软件翻译全页。
application.js 打包到一起,某些库体积大又很少变的单独打包,例如 editor,chart。layout 里 include 几个 js 文件。
其实 DHH 即使推 nobuild 也是把所有 js 预加载,可以用浏览器调试看 https://app.hey.com/sign_in ,所有 js 都用了 modulepreload。importmap 默认设置也是 preload。
懒加载会导致交互延迟,体验不好。
list_actions.rb 是个 module,被 include 到 topic_controller.rb 里面调用,调用环境是 topic_contorller。
我依赖好几个 npm 包,importmap 无法很好的支持,所以回到 esbuild 了。
把 stimulus 作为一个包装器,所有 js 库都可以包进去。
stimulus-components 很多组件就是基于这个方法。
环境变量问题,需要在 config/deploy.yml
设置
env:
clear:
DB_USER: app
secret:
- DB_PASSWORD
这里设置了的环境变量才会 push 到远程服务器。
反向代理问题,单机情况下 kamal_proxy 可以替代 nginx,去掉 nginx。
kaml_proxy 不需要设置就可以满足 rails 需要。
AI 也需要提问的智慧。我很乐意推荐不好好准备提问的人去问 AI。
主要是网络,好的网络体验大不相同。我有次调试 cloudflare 的边缘节点居然是连到英国,绕地球一圈。
看 @RaySong 有无兴趣搬运?
把图片塞到 job 的参数,小心 redis 内存不够用。
job 的参数是 data:image?不建议参数用太大的对象。把对象保存以后传 id。
basecamp 是用独立的 db 做 cache db。用 db 的好处是缓存周期可以设很长。
我现在写博客主要作为自己外部记忆,顺便给别人看看。
是 Rails cache 的一个实现,类似的可以存 memcache,redis,solidcache 是存到数据库。
Rails 8 刚发布,回归好时机。
Rails 8 的前端方案完善,简化部署配置,减少了依赖服务。要入门和回归的话这就是最好的版本。