在许多情况下,例如在处理 JSON 格式的 API 响应、处理网站上嵌入的 JavaScript 资源等时,我们经常会看到 13 位长数字,我们可能知道它是源自 new Date().getTime()
等代码的纪元时间戳,但是,作为人类,我们无法快速判断它代表什么日期和时间。有一个名为 Epoch Converter 的便捷网站可以帮助轻松将其转换为人类可读的格式,但大多数时候对于开发人员来说,甚至还有比打开网站更快捷的方法,即使用许多编程语言自带的 interactive shell
。
Ruby 3.0 带来了一些重大变化,这会给使用大量 gem 的典型 rails 应用带来很多麻烦,尤其是关键字参数行为的重大变化和 URI.escape
方法的删除。
将以 API 为中心的应用程序的 rails 版本从 5.2
升级到 6.0
时要处理的主要事情包括配置调整和修复弃用警告。
在撰写本文时,Ruby v2.7.6
是 v3.0
之前的最新版本,如果应用程序使用依赖于 BigDecimal
的库,升级到 v2.7.6
可能会遇到重大问题。
有没有想过 Ruby 的 defined?
是在哪里定义的?因为它看起来很像一个方法,所以你可能会尝试检查很多地方,例如:Object
、Kernel
、BasicObject
,甚至 Class
或 Module
,但最终却找不到它。好吧,直到你意识到这一点,答案才变得非常简单:defined?
不是一个方法,而是一个运算符或关键字。
将应用程序 rails 版本从 5.1
升级到 5.2
比从 4.2 升级到 5.0 或 从 5.0 升级到 5.1 要容易得多,需要处理的变化很少,并且很可能不会出现测试失败。
使用名为 activerecord-import 的 gem,将大量记录导入 mysql 表变得更容易,这篇文章演示了如何实现它。
将应用程序 rails 版本从 5.0
升级到 5.1
比 从 4.2 升级到 5.0 更容易,因为这只是一次小版本更新。但是,可能仍有很多问题需要解决,无论是由于框架更改还是由于过时的 gems 依赖关系。
RSpec 是 ruby 中流行的测试框架。
Rails 框架会自动加载常量,因此在“开发”或“测试”等环境中,应用程序无需在处理请求之前将所有内容加载到内存中。但是,众所周知,自动加载在 Rails 中是线程不安全的(至少对于低于 6 的版本而言),如果您碰巧使用 puma
或 webrick
等线程服务器,则很容易遇到由多线程引起的意外问题。
将 rails 升级到新的主要版本可能比较棘手,因为框架本身或项目中使用的许多 gem 可能会发生许多重大变化,这些变化要么被弃用,要么不再受支持。但是,如果按照正确的程序进行,它也可以顺利进行。这篇文章根据我最近将 API 服务器的 rails 从 4.2.11
升级到 5.0.7.2
的实际经验分享了升级过程。请注意,根据项目配置或依赖项,不同项目的升级步骤可能略有不同。
带有 cookie 的 Ruby http 请求。
Ruby parallel gem 用例。
Rack 是 ruby 世界中提供 web 框架 (ruby on rails
, sinatra
) 和 web 服务器 (webrick
, puma
, unicorn
) 之间接口的 gem。
Bundler 用于 ruby 项目中的依赖管理。
Ruby gem
是一个包含可重复使用的 ruby 应用程序或库的软件包。
rbenv 用于管理多个 Ruby 版本,这里总结了一些常用的命令,以供快速参考。
学习 Ruby 的一些基础知识。