IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Récupérer des informations relatives au script lancé (nom, machine)


Sujet :

Ruby

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Récupérer des informations relatives au script lancé (nom, machine)
    Bonjour,

    Quelqu'un sait-il comment on peut, dans un script ruby, récupérer certaines informations relatives au script exécuté? Notamment:
    - son nom
    - son chemin
    - le nom de la machine sur laquelle il a été lancé

    Contexte:
    J'ai créé un script test.rb dans lequel j'effectue des tests sur un site web (utilisation de watir pour automatiser les tests d'un site web).
    Dans ce script, je veux générer un fichier log qui contient le nom de mon script (test.rb), son chemin, le nom de la machine sur laquelle il est lancé...
    Exemple de contenu du fichier log:

    Script test.rb lancé le 24/08/07 à 08:45:24
    Script lancé sur la machine Nom_Machine
    Chemin du script : C:\tests\scripts

    myribert

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    nom du script -> $0
    chemin -> je ferais : File.expand_path($0)
    nom de la machine -> regardes du côté de ENV qui permet de lire des variables d'environement (ENV['COMPUTERNAME'] sur mon Windows, peut-être plutôt ENV['HOST'] ou dans le genre sur Unix ...)

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salut Taum,

    Merci.
    Pour le nom de la machine, cela fonctionne très bien, en ajoutant la chaîne suivante dans mon fichier de log :
    "\nScript launched on machine: #{ENV['COMPUTERNAME']}"

    Par contre, pour le nom du script, j'ai 2 problèmes :
    - L'utilisation de $0 aurait fonctionné si je lançais directement le script, mais en fait j'utilise un framework utilisant rake et le nom du fichier qu'il me renvoie est probablement le fichier lancé par rake (sur ma machine: C:/@Soft_free/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake/rake_test_loader) et non mon script de test.
    - Le nom de fichier contenu par $0 contient aussi son chemin (C:\tests\scripts\test.rb). Je voudrais avoir seulement le nom du fichier (test.rb).

    De même, File.expand_path($0) donne le chemin avec le nom du fichier, mais je voudrais le chemin sans le nom du fichier (ex: C:\tests\scripts).

    Pour info, je suis aussi sous Windows.

    Existe-t-il des solutions ?

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    quand tu as un path complet (chemin + nom du fichier), c'est une chaîne de caractères que tu récupères.

    pour pouvoir en extraire les différentes infos dont tu as besoin, un split devrait suffire

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    En effet, l'utilisation de split fonctionne bien:
    name = File.split($0)[1]
    path = File.split($0)[0]

    Mais en fait j'ai trouvé les fonctions de la classe File qui répondent exactement à ce que je recherchais:
    name = File.basename($0)
    path = File.dirname($0)

    On peut aussi avoir le nom du fichier sans l'extension:
    nameWithoutExt = File.basename($0, ".*")

    ==> dans mon exemple où $0 est le fichier C:\tests\scripts\test.rb:
    name a pour valeur "test.rb"
    path a pour valeur "C:\tests\scripts"
    nameWithoutExt a pour valeur "test"

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Par contre, quelqu'un a-t-il une solution pour mon autre problème décrit dans mon précédent message:
    "- L'utilisation de $0 aurait fonctionné si je lançais directement le script, mais en fait j'utilise un framework utilisant rake et le nom du fichier qu'il me renvoie est probablement le fichier lancé par rake (sur ma machine: C:/@Soft_free/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake/rake_test_loader) et non mon script de test."

    En résumé: j'utilise la commande rake, qui par l'intermédiaire d'un fichier de config qui contient le nom du script à lancer ("C:\tests\scripts\test.rb") exécute ce dernier.
    Si dans le fichier C:\tests\scripts\test.rb je met la ligne "scriptFile = $0", la valeur de la variable scriptFile que je récupère est "C:/@Soft_free/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake/rake_test_loader.rb" (le script Ruby invoqué par rake?). Or je veux récupérer dans ma variable scriptFile le chemin du script dans lequel je suis : "C:\tests\scripts\test.rb".
    ==> existe-t-il un autre moyen ?

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    As-tu essayé __FILE__ ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script Shell pour récupérer des informations en SSH
    Par nanashi dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/03/2012, 09h24
  2. Servlet qui permet de récupérer des informations relatives à une application
    Par L'aigle de Carthage dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/06/2011, 12h19
  3. Script SNMP pour récupérer des information de la MIB
    Par patchiko dans le forum Développement
    Réponses: 4
    Dernier message: 23/05/2011, 18h31
  4. [SNMP] récupérer des informations de la MIB avec un script snmp
    Par patchiko dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/06/2007, 11h05
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo