问题描述
我正在关注 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 不兼容。问题可能是由对 dry-struct
1.4.0 的依赖引起的,或者是由初始化 EventStoreClient::Event
时传递属性的方式引起的。
现在我将坚持使用 Ruby 2.7.3,使用它的示例可以按照文档工作,并在我最终升级到 Ruby 3 后更新此问答。