Inspirado por "Getting the source directory of a Bash script from within", ¿cuál es la manera Ruby de hacer esto?¿Puede un script de Ruby indicar en qué directorio se encuentra?
Respuesta
File.dirname(__FILE__)
le dará la ruta relativa al script que se está ejecutando. File.expand_path(File.dirname(__FILE__))
le dará la ruta absoluta.
ENV ["PWD"] parece la manera más simple para mí en Linux. No sé de una manera agnóstica del sistema operativo.
¡Gracias! Bueno para mi conocimiento general específico de Linux. –
Ese es el directorio de inicio, no el directorio de trabajo actual o el directorio donde se encuentra el script. –
B * gger, la falta de sueño hará eso. Quise decir ENV ["PWD"] por supuesto. Pero la respuesta de ba es mucho mejor. – Shadowfirebird
Uso __dir__
A partir de Rubí 2.0, __dir__
es la forma más sencilla de conseguir esto. Se
Devuelve la ruta absoluto simplificado del directorio del archivo desde el que se llama a este método.
Consulte la documentación de __dir__
, y "Why is __FILE__ uppercase and __dir__ lowercase?".
Bueno, aparte de que '__dir__' era la respuesta correcta, gracias por vincular también a la diferencia de mayúsculas y minúsculas, fue mi primera pregunta después de encontrarlo bien :) – SidOfc
uso __dir__
File.dirname(__FILE__)
no es una forma correcta de obtener el directorio donde se almacena la secuencia de comandos.
Al inicio, el directorio y el directorio de trabajo con el archivo de script es el mismo, pero puede cambiar.
Por ejemplo:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
de archivo de script almacenado en /Desktop/tmp
ejecutarlo dará salida
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
- 1. ¿Puede un script de shell indicar que sus líneas se carguen en la memoria inicialmente?
- 2. ¿Para cambiar el directorio dentro de un script de ruby?
- 3. Ruby: agregando un directorio a $ LOAD_PATH - ¿qué hace?
- 4. ¿Cómo puede un script de Ruby detectar que se está ejecutando en irb?
- 5. viendo un directorio en ruby
- 6. ¿Cómo se puede verificar la entrada de STDIN en un script de Ruby?
- 7. ¿En qué etiqueta de git se encuentra?
- 8. ¿Dónde se encuentra el intérprete Ruby?
- 9. ¿Se puede modificar un script Perl?
- 10. Obtener el directorio de un archivo de script bash en
- 11. Caracteres Unicode en un script de Ruby?
- 12. ¿Qué significa una excepción "No se puede validar datos" en System.Web.Configuration.MachineKeySection.GetDecodedData indicar
- 13. ¿Por qué se lanza un error cuando los argumentos se pasan a mi script de ruby?
- 14. ¿Qué puede causar dlopen: no se encuentra una imagen adecuada (no se puede asignar)?
- 15. Ejecutando archivos en un directorio de forma recursiva usando ruby
- 16. Estructura de directorio EXTJS: ¿Qué se puede eliminar?
- 17. ¿Se puede indicar que argparse en python 2.7 requiera un mínimo de DOS argumentos?
- 18. Encuentra qué directorio el EXE proceso en ejecución se almacena en
- 19. ¿Cómo se encuentra el factorial de un número en un script Bash?
- 20. ¿Directorio actual del script de Shell?
- 21. Cómo verificar si existe un directorio determinado en Ruby
- 22. ¿Por qué Ruby "script/generate" devuelve "No such archivo o directorio"?
- 23. ¿Puede la barra de estado en Sublime Text 2 mostrarle en qué símbolo se encuentra?
- 24. Obtener el directorio donde se encuentra el código ejecutado
- 25. Un .bat o .wsh script que puede buscar archivos
- 26. ¿Por qué getservletcontext no se encuentra?
- 27. ¿Cómo puede saber un script de shell que se ejecuta en una zona de Solaris?
- 28. Dónde se encuentra el andamio en RubyMine
- 29. No se puede determinar el directorio actual
- 30. ¿En qué directorio se ejecuta un servicio de Windows?
Ésta es la manera incorrecta de hacer eso y puede provocar errores. \t Tenga en cuenta que una vez que uno utilizó Dir.chdir puede ser un directorio diferente de donde se almacena la secuencia de comandos. '__dir__' es la forma correcta de hacerlo. –
Esta parece ser la única forma de que alguien se quede atrapado en Ruby <2.0 –