问题标签 [dry-rb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何使用干验证 gem 验证日期字符串?
我想允许使用干验证 gem 的日期格式字符串,但我不能。
日期格式的字符串在 0.13 之前是允许的,但从 1.0 开始似乎就被禁止了。现在我正在尝试升级我的 Rails 应用程序中的干式验证 gem。
编辑
我不知道为什么,但上面的代码现在可以工作了。也许缓存问题?(不过我记得我跑过bin/rake tmp:cache:clear
)请忽略这个问题。
ruby - postgresql 中枚举类型列的包含过滤
我有一个 postgres 枚举create_enum(:status_type, %i[requested approved])
。我在一个带有status_type :status, null: false
.
我正在尝试像这样在红宝石中包含包含在内进行过滤root.where(requests[:status].in(*values)
:values
是一个字符串数组。
此代码返回以下错误:
Dry::Types::ConstraintError: ["requested"] violates constraints (included_in?(["requested", "approved"], ["requested"]) failed)
。
如果我通过平等过滤它,它可以正常工作。root.where(requests[:status].is('requested')
您知道我在自定义类型列中包含包含过滤的方法吗?
mysql - 为什么干结构初始化很慢?
我有一个 Rails 应用程序,它将其配置存储在 34 个 MySQL 表中,这些表由各种对象和关联组成,总共大约 900 条记录。直到最近,业务逻辑都建立在 ActiveRecord 上,但性能不稳定,因为我没有足够的控制来控制多少查询被触发。最近我将业务逻辑“移植”到Dry::Struct
,将所有涉及的 ActiveRecord 类复制到Dry::Struct
值模型并预加载Configuration
实例中的所有配置对象:这大大减少了查询数量到固定的小数量,并显着提高了性能因为所有的联想“行走”都是在记忆中完成的,而且还有很多。
到目前为止一切顺利,但加载 34 个表(我在每次请求时都需要其中的大部分)仍然需要 34 个查询和大约 160 毫秒。该策略在 ActiveRecord 上处于低级别,将所有表中的所有记录加载为普通哈希,然后用这些初始化结构并将所有内容存储在Configuration
对象中。
我想进一步提高性能,所以我想通过UNION
在所有表中的所有字段中创建一个查询来获取所有数据。这构成了一个强大的 30 KB 的 SQL 查询,令人惊讶的是,它仅在 20 毫秒内执行。出色的!现在我只需要在大约 10 毫秒内展开这个大结构,我就赢了!
嗯,不。事实证明,仅扫描结果数组需要 48 毫秒(其中 20 是 SQL 查询),当在这里和那里解析一些 JSON 字段并准备哈希以初始化结构时,时间会增加到 78 毫秒......然后初始化它们本身需要额外的89 毫秒。如果我没有通过重复算法 100 次来测量每一步(当然是在预热记忆值之后),我不会相信,但确实如此。总而言之,与之前单独加载每个表的简单得多的算法相比,尽管单个查询很有效,但没有任何性能提升。
下面是 SQL 的样子:
产生这样的“对角线”结构
然后以下算法将其展开为原始记录:
我试图尽可能地收紧代码,但只是删除v_class.new
部分将时间缩短了一半。有没有改进的余地?
附带说明一下,从 Redis 加载Marshal
ed 完成的Configuration
对象只需要 10 毫秒,但我想避免使用 Redis 来防止错位。
ruby - Ruby - dry-rb - 如何更新现有对象的属性?
使用 dry-rb结构和类型,我正在尝试修改一个已经创建的对象,但似乎无法弄清楚。
这是不可能的,还是我错过了一些非常明显的东西?任何帮助深表感谢
ruby-on-rails - 在 Rails/RSpec 中存根 Dry::Matcher 案例
我们在我们的应用程序中使用 Dry::Monads 和 Dry::Matchers。我们主要使用 Dry::Matchers 案例语法在控制器级别使用单子结果,如下所示:
在上述情况下,我们使用集成测试对其进行测试,因此无需存根任何东西。
在某些情况下,我们希望在工作流程的中间步骤使用上述块语法来处理单子响应,因此我们希望对上述内容进行存根/模拟,result
但不存根块。我们发现成功的一种方法是:
然而,这感觉就像一个非常严厉的间谍。有没有人遇到过这个用例?一般来说,这是一个坏主意吗?另一种方法是使用 case 语句处理单子响应,该语句同样有效,但看起来不太好。
ruby - 如何使用干模式 gem 验证一组不同的对象
鉴于我有这样的 JSON 对象,其中包含各种对象的数组,例如:
根据 JSON 模式验证,我可以使用这个 JSOM 模式定义来验证这个模式:
如何使用干模式 gem 验证输入 JSON?你有什么想法?
ruby-on-rails - rails 7 和 ruby 3.1 中的依赖注入问题
我有一个简单的 rails 应用程序,使用dry-container
& dry-auto_inject
by dry-rb 在控制器上注入服务,这种方法在 rails 6 & below 和 ruby 2.7 & below 上运行良好。
我创建的服务app/services/v1
我在下面注册了一个服务等级lib/marka/
并尝试包含在控制器上app/controllers/api/v1/
我收到一个错误,看起来像