Java tiene el conveniente System.getProperty("user.home")
para obtener el directorio "de inicio" del usuario de una manera independiente de la plataforma. ¿Cuál es el equivalente en Ruby? No tengo una caja de Windows con la que jugar, y tengo ganas de depender de las tildes en los nombres de archivo no es la manera más limpia. ¿Hay alternativas?¿Medios multiplataforma para obtener el directorio de inicio del usuario en Ruby?
Respuesta
El método File.expand_path
usa la convención de Unix para el tratamiento de la tilde (~
) especialmente, por lo que se refiere a ~
el directorio personal del usuario actual y ~foo
se refiere al directorio principal foo
's.
No sé si hay una manera mejor o más idiomática, pero File.expand_path('~')
debería ponerlo en marcha.
ENV["HOME"]
o ENV["HOMEPATH"]
debería darle lo que desea.
homes = ["HOME", "HOMEPATH"]
realHome = homes.detect {|h| ENV[h] != nil}
if not realHome
puts "Could not find home directory"
end
es así en Windows, ¿verdad? – davetron5000
Creo que es: http://vlaurie.com/computers2/Articles/environment.htm –
@ davetron5000 Eso es lo que hace mi código, 'HOMEPATH' es una variable de entorno solo en Windows. –
Con Ruby 1.9 y superior puede usar Dir.home
.
en plataformas UNIX (Linux, OS X, etc.), ENV["HOME"]
, File.expandpath('~')
o Dir.home
todos confían en la variable de entorno que se está HOME
conjunto. Pero a veces encontrará que la variable de entorno no está configurada; esto es común si está ejecutando desde un script de inicio o desde algunos programadores de proceso por lotes. Si estás en esta situación, usted todavía puede obtener el directorio de inicio correcta a través de lo siguiente:
require 'etc'
Etc.getpwuid.dir
Una vez dicho esto, ya que esta pregunta está pidiendo un método "multiplataforma" hay que señalar que este no funcionará en Windows (Etc.getpwuid
devolverá allí nil
). En Windows, ENV["HOME"]
y los métodos mencionados anteriormente que dependen de él funcionarán, a pesar de que la variable HOME
no se establece comúnmente en Windows: al inicio, Ruby completará ENV["HOME"]
basado en las variables de entorno windows HOMEPATH
y HOMEDRIVE
. Si las variables de entorno windows HOMEDRIVE
y HOMEPATH
no están configuradas, entonces esto no funcionará. No sé qué tan común es realmente en los entornos de Windows, y no sé de ninguna alternativa que funcione en Windows.
Esta es la respuesta correcta. Gracias por el puntero al módulo etc. – ckruse
- 1. Obtener el directorio de inicio del usuario
- 2. Obtener el directorio personal del usuario actual
- 3. Inicio de sesión en el directorio temporal de manera multiplataforma
- 4. Obtener directorio de inicio en Linux, C++
- 5. Cómo obtener el directorio de inicio del usuario actual en Windows
- 6. ¿Ruta del directorio de escritorio multiplataforma?
- 7. Obtener directorio padre del directorio actual en Ruby
- 8. Solución multiplataforma para obtener el nombre de inicio de sesión actual en Python
- 9. ¿Cómo obtener la ruta del directorio Programas de Inicio?
- 10. Obteniendo la ruta del directorio de inicio en C#?
- 11. Lea el directorio de inicio de usuario de PHP
- 12. Empaquetado de Debian: despliegue de archivos en el directorio de inicio del usuario
- 13. log4j archivo de registro en el directorio de inicio del usuario
- 14. ¿Cuál es la alternativa para ~ (directorio de inicio del usuario) en el símbolo del sistema de Windows?
- 15. Apache 13 permiso denegado en el directorio de inicio del usuario
- 16. ¿cómo puedo obtener el directorio actual del ejecutable en py2exe?
- 17. Forma de Ruby multiplataforma para escribir el símbolo EOF
- 18. Obtener el nombre para mostrar del usuario de WindowsIdentity
- 19. ¿Cómo encontrar el directorio de inicio del usuario real usando python?
- 20. Diseño del directorio para el proyecto Ruby puro
- 21. Hacer el directorio de inicio de cygwin al perfil de usuario de Windows
- 22. ¿Cómo puedo hacer referencia al directorio de inicio del usuario en WIX
- 23. git clonar en el directorio de inicio
- 24. Ruta absoluta sin resolución de enlace simbólico/Mantener al usuario en el directorio de inicio
- 25. Obtener nombre de usuario de inicio de sesión en java
- 26. no se puede obtener el inicio de la unidad de prueba para trabajar en ruby 1.9.2
- 27. ¿Obtener el nombre del directorio virtual?
- 28. Configuración del directorio de inicio de ivy en Ant
- 29. ¿Cómo puedo obtener el directorio de usuario actual?
- 30. PHP Obtener el nombre del directorio actual
es cierto en Windows, ¿verdad? Los documentos no indican como tal – davetron5000
Dir.home añadiendo en Ruby 1.9.? http://redmine.ruby-lang.org/issues/show/1027 – codecraig
Todo en esta página funciona (al menos en Windows 7), pero creo que dir.home y usar tilde parecen ser los mejores. – davetron5000