¿Puede un script Ruby decir en qué directorio está?
Inspirado por " Obteniendo el directorio fuente de un script Bash desde dentro de", ¿cuál es la forma Ruby de hacer esto?
4 answers
File.dirname(__FILE__)
le dará la ruta relativa al script que se está ejecutando.
File.expand_path(File.dirname(__FILE__))
te dará el camino absoluto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 11:17:42
Use __dir__
A partir de Ruby 2.0, __dir__
es la forma más sencilla de obtener esto. It
Devuelve la ruta absoluta canónica del directorio del archivo de la cual se llama este método.
Ver el __dir__
documentación, y " ¿Por qué __FILE__ mayúscula y __dir__ minúscula?".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 13:24:16
Uso __dir__
File.dirname(__FILE__)
no es una forma adecuada de obtener el directorio donde se almacena el script.
Al inicio el directorio de trabajo y el directorio con archivo de script es el mismo, pero puede cambiar.
Por ejemplo:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
Para el archivo de script almacenado en /Desktop/tmp
ejecutándolo dará salida
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-28 07:51:42
ENV["PWD"] parece la forma más sencilla para mí bajo Linux. No conozco una forma de ser agnóstico.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 11:27:17