我完全是Ruby的初学者,我希望得到一些建议.我的目标是用Ruby程序记录所有(例如)套接字操作,并且尽可能少地修改代码.

作为一个小例子,假设我有一个超级简单的服务器,如下所示:

require 'socket'

server = TCPServer.open(2017)
loop {
    client = server.accept
    client.puts "hello world"
    client.close
}

在Python语言中,我可以使用sys.addAuditHook来捕获隐藏在TCPServer.open/server.accept/client.puts深处的套接字操作(打开/写入/等等),而不必求助于包装整个TCPServer API或类似的东西.

我感兴趣的是系统事件,而不是对象写入,所以Rails的活动记录回调看起来不像我想要的.

有没有人知道Ruby/Ruby on rails有没有类似的东西,或者我是不是坚持以一种缓慢的方式来做这件事?

谢谢!

推荐答案

不,Ruby没有内置那种级别的日志(log)记录.大部分用例通常通过APM/instrumentation tools or services实现,但这些用例通常面向较高级别(Gem)库,而不是低级stdlib内容.

Ruby-on-rails相关问答推荐

如何在Rails中创建没有字符串的查询

如何从 gem 覆盖 JSONAPI.configure

Ruby/Rails 相当于 Python 的 sys.addAuditHook

获取所有属于模型的嵌套对象

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

在 JS 模块中使用 Rails-UJS(带有 webpacker 的 Rails 6)

Postgres on Rails 致命:数据库不存在

DateTime.now 还是 Time.now?

如何在 Windows 上为 Ruby 安装 sqlite3?

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

如何让空白复选框作为假传递给参数

如何在 Rails 中测试助手?

控制器 helper_method

rails 单数资源还是复数?

ruby/ruby on rails 内存泄漏检测

如何为 rspec 设置 ENV 变量?

如何在两个字段上对 ruby​​/rails 进行排序?

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

如何在不触及 updated_at 属性的情况下更新单个属性?

是否可以输出rake db:migrate产生的 SQL 更改脚本?