2010-06-18 4 views
5

Existe-t-il des moyens de récupérer la chaîne de connexion à la base de données où mon ruby ​​est connecté? ce que je voudrais faire est:Ruby on rails - comment récupérer les chaînes de connexion

1) Nom de la base de données où le rubis est connecté 2) Le nom d'utilisateur de SQL Server 3) Mot de passe de SQL Server 4) Nom du serveur

Je veux pour le stocker dans des variables de session.

(I'am en utilisant MS SQL Server.)

S'il vous plaît aider! Merci!

+0

Je ne vais même pas demander pourquoi vous voudriez stocker ces variables de session. D'accord. Pourquoi voulez-vous les stocker dans une session? – theIV

+0

parce que j'ai besoin d'appeler une application CGI, et cette CGI doit se connecter à la base de données où mon ruby ​​est connecté. Prenez note que chaque client a des chaînes de connexion différentes, donc la chaîne de connexion de l'application CGI doit être dynamique en fonction de la chaîne de connexion ruby. J'espère que vous pouvez m'aider avec celui-ci. merci – Jett

Répondre

0

Ces valeurs sont toutes stockées dans le fichier config/database.yml, mais AFAIK vous ne pouvez pas accéder à ces valeurs en tant que variables à partir de votre contrôleur.

+0

Votre application pourrait lire/interpréter le fichier config/database.yml. Il aurait alors toutes les infos à faire comme il le souhaitait. –

0

Base de données: ActiveRecord::Base.connection.current_database

Vous pouvez également faire quelques regexs de fantaisie avec les éléments suivants:

ActiveRecord::Base.connection.inspect 

Mais oui, cela est une très mauvaise idée.

+0

en utilisant ActiveRecord :: Base.connection.inspect montre le nom d'utilisateur et le mot de passe mais j'ai des problèmes dans les regex, je ne peux pas juste dire le mot de passe seulement – Jett

5

Vous pouvez accéder à toutes les propriétés décrites dans vos database.yaml comme ceci:

ActiveRecord::Base.configurations["development"] => 
{"encoding"=>"utf8", "username"=>"foo", "adapter"=>"mysql", "database"=>"bar_development", "host"=>"localhost", "password"=> "baz"} 
+0

Cela a fonctionné parfaitement pour moi. J'avais besoin d'écrire une tâche rake mysqldump'ed notre base de données de production, et ne voulait pas avoir à coder en dur les chaînes de connexion en dehors du fichier database.yml. –

5

j'irais avec ActiveRecord::Base.connection_config qui retourne hachage avec des options pour ActiveRecord 3.

0

On dirait que vous venez vouloir se connecter directement à la base de données. Vous pouvez le faire avec rails dbconsole (voir le docs)