2013-09-28 5 views
1

J'installe application_name dans ma chaîne de connexion comme ceci:Comment définir application_name avec sinatra/suite

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

Cependant, quand je considère le pg_stat_activity ou toute autre mesure de filtrer par application_name Je ne suis pas le voir assigné correctement.

Mon gem Pg est "pg (0.17.0)" et je crois que depuis 0.16 il a été capable de gérer le nom de l'application. sequel_pg est (1.6.8) et Sequel est (4.2.0).

Un nom d'application est défini, mais il est le chemin/serveur Web lié plutôt que ce qui est prévu dans la configuration:

/Users/gator/.rvm/gems/[email protected]/bin/shotgun 

Même lorsque j'utilise une chaîne de connexion de type URL ne fonctionne toujours pas enregistrer la application_name:

DB = Sequel.connect('postgres://[email protected]/blah?application_name=blahwebapp') 

C'est la même URL que j'utilise dans psql pour se connecter et il apparaît bien.

En the documentation pour Sequel Je ne vois pas beaucoup sur application_name comme une option qui me inquiète:

Toutes les pensées/idées sur la façon de le faire pour respecter le application_name?

+1

Je vous recommande de prendre ceci à la liste de courrier de Sequel-Talk. C'est assez ésotérique pour Stack Overflow. Jeremy Evans répond périodiquement aux questions ici, mais il surveille la liste de courrier. –

+1

Lisez également les documents de l'adaptateur Sequel pour PostgrSQL: http://sequel.rubyforge.org/rdoc-adapters/index.html. Sequel est pure-Ruby donc vous devriez être capable de lire facilement la source si nécessaire. Vous pouvez obtenir des informations utiles sur les fonctionnalités des pilotes qui pourraient être manquantes et corriger ou remplacer pour ajouter ce que vous voulez. Je l'ai fait quand je travaillais avec une grosse base de données et que j'avais besoin de vidages de schémas de tables mais que je ne pouvais pas obtenir les informations que je voulais. –

Répondre

2

L'adaptateur PostgreSQL de Sequel ne transmet pas directement l'URL à PostgreSQL. Il ne peut pas vraiment le faire et garder la compatibilité ascendante.

Il semble que vous pouvez simplement définir le application_name lors de l'exécution. La meilleure façon de le faire avec Sequel est via after_connect:

DB = Sequel.connect('postgres://[email protected]/blah', :after_connect=>proc{|c| c.execute("SET application_name TO 'blahwebapp'")}) 

Il est possible d'intégrer cette fonctionnalité dans la suite afin que l'utiliser à l'intérieur des postgres: // 'URL fonctionnerait correctement. Je suis ouvert à cela si d'autres personnes pensent que ce serait utile.

+0

C'est ce que je cherchais! DB = Sequel.connect (: adaptateur => 'postgres',: hôte => 'localhost',: base de données => 'blah',: utilisateur => 'gator',: max_connections => 10,: after_connect => (proc do | conn | conn.execute ("SET nom_application TO 'blahwebapp'") end)) – Gator

Questions connexes