Hegwin.Me

朱雀桥边野草花,乌衣巷口夕阳斜。

Counter Cache 和 counter_culture

Counter Cache and counter_culture

你是否遇到过这样的需求:假设我们是一个书评网站(比如豆瓣),在书目的列表中,我们需要显示每本书的评价数量。我们会有一个 Book model,以及一个 Review model,他们是一对多的关系,即 `Book.has_many :reviews ` 。 最直接的做法就是在书目的列表页面这样 `books.each { |book| book.reviews.count }`,它可以...

升级 Ruby 到 3.2

Upgrade Ruby from 3.0 to 3.2

眼看着 Ruby 3.3 的 preview 2 版本都已经发出来了, 于是我就着手把一个 3.0 的项目升级到 3.2了。可能是我这样直接从 3.0 到 3.2 升级跨度点大,还是遇到了一些不大不小的问题,我在这里做一个整理,希望可以帮助到大家。 ## Bundled gems 在 Ruby 3.1 中,有些 lib 从标准库变成了 bundled gems,比如我项目中用到的...

Ruby Conf China 2023 参会笔记 Day 2

Takeaways from Ruby Conf China 2023 Day 2

今年,AI真是一个大热的议题,从 EverythingGPT 到 LLM,大家都在讨论着这一场新的技术变革。为期两天的 Ruby Conf China 2023 上,也有三个议题关注到 AI 和 LLM,令人感到兴奋。 这篇文章记录一下我在 Ruby Conf 第二天学习到的内容。这天有2位讲师在讲如何让 Ruby 和 AI一起工作,有深奥的理论(比如 Attention,但我没懂),...

Ruby Conf China 2023 参会笔记 Day 1

Takeaways from Ruby Conf China 2023 Day 1

上周末(2023年8月19-20日),Ruby Conf China 在上海成功举办。这也算是 Covid-19 以来,第一次在线下举办Ruby Conf —— 大家等待了三年之久。非常奇妙的是,会场就是三年前为 Ruby Conf 2021 订下的会场(明天广场 JW 万豪);那次由于疫情问题,不得不改为线上会议。酒店方面还是比较厚道,三年后并没有在会场和餐食方面涨价。顺便一说,万豪轩的自...

Rails 7升级过程中针对cookie一系列变化的应对策略

Rotate cookies when upgrading to Rails 7

最近在进行Rails项目从 6.1 到 7 的升级,这个过程并非一蹴,而是分了好几次部署才完成最终的设置。Rails 7在带来一些新功能的同时,也带来不少 breaking changes,使得这一次的版本升级比之前的都要麻烦一些。这其中比较折腾人的就是关于 cookie的一些变化,Rails修改了默认的cookie serilaizer,以及默认的加密方式,造成了新旧cookie的不兼容,...

运行特定版本的 bundler

Run specific version of bundler

Ruby小(没)技(鸟)巧(用)系列。 当你同时安装了两个版本的bundler,比如 2.0.1 和 1.17.2,默认情况下 bundle exec 等命令都是使用的最新版本的bundler;而你要维护的程序比较古老,那么你可能就会遇到这个神奇的问题: Bundler could not find compatible versions for gem "bundler" ...

Rails 应用的内存优化

Improve Memory for Your Rails App

我今天在郑州参加了为期两天的 Ruby Summit China 2018;Summit 在郑州“大玉米”举行。我没想到在郑州这样一个互联网公司密度不是那么高的城市,可以举办这样规模的互联网大会(Ruby Summit只是其中一个分会场)。更令人惊喜的是,Ruby语言之父松本行弘(Matz)也有来参加做开场演讲。于是乎,我专程从上海来到郑州参加这个Summit——也算是程序员界的追星行为了。...

谷歌开发者大会2017心得:PWA 渐进式网页应用

Takeaways from Google Developer Days 2017: PWA Progressive Web App

这是Google Developer Days 2017 Take Ways系列的第二篇。在今年的GDG上,渐进式网页应用(PWA,Progressive Web App)是一个反复被提起的技术,我至少参与两次主题是 PWA 的演讲。 PWA所要解决的主要问题是能让 Web App 有着接近 Native App 的效率。另外,在人们不太乐意下载新App的情况下,PWA 给开发者的应用...

Rails优化SQL可能用到的工具

Tools to Help to Improve SQL in Rails

你是否遇到过遇到 Rails app 在渲染页面很慢的情况? 你是否想找到造成它“慢”的原因?性能瓶颈究竟在哪里?是它执行 SQL 查询数据慢(可能是N+1,或者是没有合适的索引),还是其他的原因,比如view太大? 进行性能优化一直是一个典型的“难定位”问题;目前我个人是用到了以下几个工具去找出问题到底在哪里: 1. New Relic 老牌的性能检测工具,与Rails集成之后...

修改Repo地址后Capistrano部署问题

How to Deploy with Capistrano after Repo URL changed?

其实有点闹妖的成分, 我们用Capistrano部署项目,最近把项目仓库从BitBucket迁移到了Github上,本以为只要把 `config/deploy.rb` 里 `set :repo_url`改一下就好,但事实并非如此。 用Cap执行部署时,看到Log里还是从BitBucket的repo里拿的代码,所有迁移到GIhub之后的改动都没有包含进去。 在网上搜了下,需要自己s...