Access denied, Please sign in and make sure you have proper permission.

Ruby 请教。怎么推广一个 gem 呢?我的一个 gem s_matix 是有什么硬伤让其不容易被收录和推荐呢?

libinzhangyuan · May 07, 2025 · Last by Peter replied at May 20, 2025 · 579 hits

我感觉可能只是单纯需求比较少,大部分 ruby 的场景可能用不太到

国内更多是做 rails,一般用不到这个 gem

一切以需求出发

我们现在写 gem 都是自己在用,更贴和自己的需求

ActiveSupport::Cache::MemoryStore 已经实现了这个功能。Ruby 现在几乎等同于 Rails, 所以用不到你这个 Gem 吧。

Reply to Peter

跟这个的用处还是有差别的,s_matrix 主要用作海量数据加载后内存占用大的情况

粗略看了一下,是个用 map 和 vector 的轮子,CRUD 只实现了 C, 目的是为了解决 Ruby String 对象的内存占用问题,特别是重复对象和空值。

所以 Readme 中提到的 480MB 的 Ruby 内存占用我不知道你是不是用了 freeze# frozen_string_literal: true, 另外,Ruby 3.4 默认设置了 frozen_string_literal 为 true, 如果你有 1440000 个字符串,可以升级 Ruby 看一下内存占用。

你的 gem 在我看来只适合你的特定场景,一个健壮的 rails 系统要尽量减少 gem, 如果内存溢出,得排查老半天,如果不是自己写的 gem, 灾难程度还要升级。

因为内存的特性,内存中的数据只适合做缓存,如果真要在本地用几百 MB 的缓存,我可以在本地装个 Redis 就可以了,Redis 默认还有持久化,速度也能保证。当然,我最先会考虑 ActiveSupport::Cache::MemoryStore, Redis 都不会装。

MemoryStore 的 ruby 对象设计也很优雅,内存限制内不会被清理,超过设定值后,最久未使用(LRU)项会被清理。现在内存这么便宜,我在欧洲 OVH 16 欧元/月的服务器都是 64 GB 内存,为什么还要折腾代码?

You need to Sign in before reply, if you don't have an account, please Sign up first.