2

application_name在我的连接字符串中设置如下:

DB = Sequel.connect(:adapter=>'postgres', :host=> 'localhost',
:database=>'blah', :user=>'gator',
:application_name => 'blahwebapp')

但是,当我查看pg_stat_activity或任何其他要过滤的指标时,application_name我没有看到它被正确分配。

我的 Pg gem 是“pg (0.17.0)”,我相信从 0.16 开始它就能够处理应用程序名称。sequel_pg 是 (1.6.8) 而 Sequel 是 (4.2.0)。

设置了应用程序名称,但它与路径/网络服务器相关,而不是配置中设置的名称:

/Users/gator/.rvm/gems/rub...47@blahwebapp/bin/shotgun

即使我使用 URL 类型的连接字符串,它仍然没有注册application_name

DB = Sequel.connect('postgres://gator@localhost/blah?application_name=blahwebapp')

这与我在 psql 中用于连接的 URL 相同,它显示得很好。

在Sequel的文档中,我没有看到太多application_name让我担心的选项:

关于如何让它尊重的任何想法/想法application_name

4

1 回答 1

3

Sequel 的 PostgreSQL 适配器不会将 URL 直接传递给 PostgreSQL。它不能真正这样做并保持向后兼容性。

看起来你可以application_name在运行时设置。使用 Sequel 执行此操作的最佳方法是通过 after_connect:

DB = Sequel.connect('postgres://gator@localhost/blah', :after_connect=>proc{|c| c.execute("SET application_name TO 'blahwebapp'")})

可以将此功能集成到 Sequel 中,以便在 'postgres://' URL 中使用它可以正常工作。如果其他人认为它有用,我对此持开放态度。

于 2013-09-30T05:13:37.767 回答