Java dispose des connaissances appropriées System.getProperty("user.home")
pour obtenir le répertoire "home" de l'utilisateur de manière indépendante de la plate-forme. Quel est l'équivalent en rubis? Je n'ai pas de machine Windows avec laquelle jouer, et je sens que me fier aux tildes dans les noms de fichiers n'est pas la méthode la plus propre. Y a-t-il des alternatives?
Réponses
Trop de publicités? La méthode File.expand_path
utilise la convention Unix de traitement spécial du tilde ( ~
), de sorte que ~
réfère au répertoire de base de l'utilisateur actuel et ~foo
fait référence au répertoire personnel de foo
.
Je ne sais pas s'il existe un moyen meilleur ou plus idiomatique, mais File.expand_path('~')
devrait vous aider.
Sur les plates-formes unix (linux, OS X, etc), ENV["HOME"]
, File.expandpath('~')
ou Dir.home
tous compter sur l' HOME
variable d'environnement définie. Mais parfois, vous verrez que la variable d'environnement n'est pas définie--ce qui est commun si vous êtes en cours d'exécution à partir d'un script de démarrage, ou de certains lots de planificateurs. Si vous êtes dans cette situation, vous pouvez toujours obtenir votre répertoire d'accueil via le suivant:
require 'etc'
Etc.getpwuid.dir
Ayant dit que, puisque cette question est de demander un "cross-platform" la méthode, il faut noter que cela ne fonctionne pas sur Windows (Etc.getpwuid
sera de retour nil
, là.) Sur Windows, ENV["HOME"]
et les méthodes mentionnées ci-dessus, qui s'appuient sur le travail, malgré l' HOME
variable n'étant pas couramment définie sur Windows--au démarrage, Ruby va remplir ENV["HOME"]
basé sur windows HOMEPATH
et HOMEDRIVE
variables d'environnement. Si les fenêtres HOMEDRIVE
et HOMEPATH
variables d'environnement ne sont pas réglée, alors cela ne fonctionnera pas. Je ne sais pas comment commun qui est réellement dans les environnements Windows, et je ne sais pas de toute solution alternative qui fonctionne sur Windows.