ruby - 如何使用 sinatra/sequel 设置 application_name

标签 ruby postgresql sinatra sequel

我在连接字符串中设置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 相同,并且显示正常。

the documentation对于 Sequel,我没有看到太多关于 application_name 的选项,这让我担心:

关于如何让它尊重 application_name 有什么想法/想法吗?

最佳答案

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 中使用它可以正常工作。如果其他人认为这有用,我对此持开放态度。

关于ruby - 如何使用 sinatra/sequel 设置 application_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19067729/

相关文章:

ruby - 将 Sinatra 与 Let's Encrypt 结合使用

ruby - 在 block 之前更改 Sinatra 中的参数

ruby-on-rails - 在 ruby​​ 中将散列转换为数组

ruby - 帮助开始使用 Mechanize

ruby-on-rails - 在 webrick 服务器的生产模式下运行 rails

ruby - 如何从 rspec 测试中调用方法

database - 通过命令行插入 SQL 语句而无需重新打开与远程数据库的连接

PostgreSQL 用户定义类型成员比较

ruby - Sinatra 是多线程的吗?

sql - 可能在一个或另一个表中的 PostgreSQL 引用数据