ruby - 如何使用 ruby event_store_client 发布事件?
问题描述
我正在关注event_store_client上的文档,以便使用EventStore DB设置发布/订阅系统,但我无法发布要发布的事件。
以下是我到目前为止采取的步骤:
- 我最初尝试将服务器设置为不安全模式下的 Docker 容器:服务器启动,我可以进入管理 UI(无需身份验证),但随后客户端通过尝试连接 SSL 失败,我还没有找到方法在客户端禁用安全性。
- 然后我尝试使用 gem 中提供的脚本启动服务器,但是 docker-sync 出现问题并且服务器无法启动。
- 最后,我复制了脚本中的步骤,创建了自签名证书,我可以让服务器启动,客户端使用首选的 gRPC 协议安全地连接。
我可以按照教程步骤进行操作
event_store.publish(stream: 'newstream', events: [event])
然后我收到以下错误:
ArgumentError: wrong number of arguments (given 1, expected 0)
from /usr/local/bundle/gems/event_store_client-1.0.8/lib/event_store_client/event.rb:17:in `initialize'
我试图在堆栈跟踪之后查看源代码,但我找不到该调用有什么问题。该event
对象似乎已正确初始化,并且我很确定连接也已正确建立(使用不同的凭据出现另一个错误)。
非常感谢任何建议,谢谢。:-)
解决方案
从 1.0.8 版开始,它似乎event_store_client
与 Ruby 3.0.0 不兼容。问题可能是由于对 1.4.0 的依赖dry-struct
,或者EventStoreClient::Event
是初始化时传递属性的方式。
现在,我将坚持使用 Ruby 2.7.3,示例确实按照文档说明工作,并在我最终升级到 Ruby 3 后更新此问答。
推荐阅读
- html - 在主题自定义模式下使用 Shopify 主列块制作图像网格
- javascript - 使用 Angular Material 时渲染视图会阻塞事件循环
- php - 安装在子文件夹中的 Laravel 的文件路径
- c++ - 在地块工具中跟踪子进程的命令
- mysql - 如何将两个查询合并为一个查询?
- node.js - 用于管理不同日期的不同价格金额的 MongoDB 模式
- asp.net-core - 我正在使用 Westwind.Utilities.ReflectionUtils 获取 COM 对象 System._COMObject
- bash - 检查在 shell 脚本中运行的 qsub 作业的状态
- mapping - 参数化 SAP PI 映射
- qt - 如何使最近的 MSVC 链接器将导入数据与 .rdata 部分合并?