Hegwin.Me

溯洄从之,道阻且长。溯游从之,宛在水中央。

从手动到自动,部署 Ruby 代码到 AWS Lambda

How to Deploy Ruby Code on AWS Lambda: A Brief Guide from Manual to Automated

最近做了一些新的尝试,将一部分与项目主业务关联性不大的功能,单独作为 AWS Lambda 去开发和部署——也算是在 serverless 开发的大潮流中向前迈进了一步。这篇文章主要是基于我在部署 Ruby 代码到 AWS Lambda 过程中,我所学习到的一些方法和心得。 目前 AWS Lambda 支持的语言有 Node, Python, Java, .NET, Ruby 和 G...

升级 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 万豪);那次由于疫情问题,不得不改为线上会议。酒店方面还是比较厚道,三年后并没有在会场和餐食方面涨价。顺便一说,万豪轩的自...

Ruby命令行格式化输出

Format Your Output in Terminal with Ruby

在命令行输出内容,一般而言Ruby基本的方法都是够用的,比如 puts、print、sprintf系列;但如果要在terminal输出颜色,表格进度条等,就会比较难以实现了。 这里小节下自己探索后感觉好用的gems: 彩色输出(基于ANSI):rainbow; 表格输出:terminal-table; 大综合(包含彩色、表格和进度条):formatador。 R...

在Ruby中运行系统命令

Execute System Commands in Ruby

在Ruby中有若干种方法来调用系统命令: 1. 反引号或者 %x(); 2. system 方法; 3. File; 4. Open3。 反引号及 %x() 与 system 的区别在于: system 只会返回 true/false;而`%x`在命令执行成功时,会返回命令的stdout,当命令支持失败时,会返回空字符串 `""` 这样看来其实反引号或者 `%x...

Ruby中目录和文件操作的几种方式

Different methods in Ruby to manipulate directories and files

创建目录: 方法一:利用 Dir.mkdir 可以创建一个目录,并且其有一个可选参数用来标记目录的权限。 如我要在 /Users/hegwin/Workspace 目录下创建一个 `ruby` 子目录,那么可以这么操作: Dir.mkdir('/Users/hegwin/Workspace/ruby') 正常创建后,Dir.mkdir 会返回整数 0。 这个方法和Li...

Ruby 2.5 允许在do/end代码块中使用rescue

Ruby 2.5 allows rescue/ensure inside do/end blocks

本文介绍Ruby2.5的一个新特性:在以前的Ruby版本中,如果你需要用的rescue来捕获和处理异常,你必须要把可能抛出异常的代码放在 begin end 块中,而在Ruby 2.5中,普通的 do end 块中你也可以直接使用 rescue 和 ensure 等异常处理的关键字了。注意这个功能不是向下兼容的,如果使用2.4则会遇到错误。

Rails优化SQL可能用到的工具

Tools to Help to Improve SQL in Rails

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

Selenium driver 对 JS Confirm 的处理

How to handle javascript confirm with selennium webdriver

在Web开发中经常会使用JS弹出确认框,在feature测试脚本如何处理这个弹出框呢? page.driver.browser.switch_to.alert.accept # => 点击OK page.driver.browser.switch_to.alert.dismiss #=> 点击 Cancel page.driver.browser.switch_to.a...