现在都切 Ruby China 源吧,备案已经弄好。服务恢复了
等备案好了就对了,还在审批中
Ruby China 已经在跑了
实测了一下,有效果
def tarai(x, y, z)
x <= y ? y : tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y))
end
require "benchmark"
Benchmark.bm do |x|
x.report('Ractor') { 6.times.map { Ractor.new { tarai(14, 7, 0) } }.each(&:take) }
end
我调整参数以后,基于最新的 Ruby 3.0.0 跑,把 MacBook 的 6 核 CPU 全部用上了:
如果是 Ruby 2.7 用 Thread:
def tarai(x, y, z)
x <= y ? y : tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y))
end
require "benchmark"
Benchmark.bm do |x|
x.report("Thread") { 6.times.map { Thread.new { tarai(14, 7, 0) } }.each(&:join) }
end
3.0 的并发支持多核了么?谁知道哪里有参考资料,发来看看
It’s multi-core age today. Concurrency is very important. With Ractor, along with Async Fiber, Ruby will be a real concurrent language. — Matz
Ruby China 的 Docker Image 打包:
拉下来跑了一下 38K,跑完服务器 Crash 了
围观 Forem 的升级,貌似挺闹心的,貌似 Gem 和特殊用法太多
https://github.com/forem/forem/pull/11333
Homeland 的经验,减少一些奇怪的用法,尽量 Follow Rails way,比如最近我去掉了:
当然,还有去掉他们一个重要原因是更新太慢,迟迟没跟进社区新版本。
此外,还去掉了:
另外,我司内部一个比较复杂的后台系统也升级到 Rails 6.1 了,比较顺利
Homeland 和 BlueDoc 升级 Rails 6.1 的 PR 大家有需要可以参考一下:
因为这两个项目测试覆盖率较高,所以基本上是直接
rails app:update
根据 Diff 更新默认的几个文件以后,再适当修正一下废弃 API 以及无法升级的 Gem
bulk_insert 可以改用 insert_all
方法代替了,bulk_insert 更新太慢了,我的项目里面都去掉了
https://api.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#method-i-insert_all
https://github.com/ruby-china/homeland/commit/eb95fc9200889c435ea7bfff5b5accd1a5041427
理解问题,Ruby 3 的 3x3 目标是:性能 3 倍于 Ruby 2.0,而不是 3.0 vs 2.7 或 2.6。
实际上有数据表明,这个目标已经快达到了(估计目前是 2.5x)
从目前我了解到的其他统计数据来看,3.0 vs 2.6 性能差异不明显
可以试试参考
config.action_dispatch.rescue_responses
https://github.com/rails/rails/pull/35753 https://guides.rubyonrails.org/configuring.html#configuring-action-dispatch
406 是正常的,Rails 的安全保护
感觉你时间都花在折腾 Vim 配置了
GitHub 出的
升级 6.1 可能最大的难点将是 Autoload mode 的变更,现在 zeitwerk
为默认的。如果你之前的项目的文件组织方式没有 Follow Rails 的约定,将会有困难。
Ruby China 已完成升级上线
Andrew Kane 好多产出
挺简单的,我们这边很多新手一周上手可以开始做项目
一直没空解决这个问题
用 Sidekiq 异步发送也可以有“立刻”的效果啊,你不用 Sidekiq 也没法“立刻”。
邮件发送本身需要一些时间的
这个对需求抠字眼了
git branch 看看是那个分支