Estoy ejecutando Ruby en Windows, aunque no sé si eso debería marcar la diferencia. Todo lo que quiero hacer es obtener la ruta absoluta del directorio de trabajo actual. ¿Es esto posible desde irb? Aparentemente desde un script es posible usarFile.expand_path(__FILE__)
Pero desde irb intenté lo siguiente y obtuve un error de "Permiso denegado":
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Dexygen
fuente
fuente
Dir.pwd
) o quiere el directorio donde se encuentra el script que se está ejecutando actualmente (que esFile.dirname(__FILE__)
)? Imagina llamar un script desde cualquier otro lugar (comoruby testdirectory/testscript.rb
) aquí, ¡los dos serán diferentes!File.expand_path(__FILE__)
", porque__FILE__
la ubicación es un animal diferente al directorio de trabajo actual (que esDir.pwd
).Respuestas:
Dir.pwd
Parece funcionar.http://ruby-doc.org/core/Dir.html#method-c-pwd
fuente
pwd
), que podría ser en algún lugar completamente diferente de donde se encuentra el archivo de script.File.expand_path File.dirname(__FILE__)
devolverá el directorio relativo al archivo desde el que se llama este comando.Pero
Dir.pwd
devuelve el directorio de trabajo (resultados idénticos a la ejecuciónpwd
en su terminal)fuente
Dir.pwd
es equivalente apwd -P
.exec('pwd -L')
obtendrá el equivalente de pwd en el terminal (pwd normalmente es un bash incorporado, y no resuelve enlaces simbólicos).bundle exec rspec spec
en el directorio '/ project', mientras que en el archivo 'spec / spec_helper.rb', el valor deDir.pwd
todavía será '/ project'.En cuanto a la ruta relativa al script de ejecución actual, desde Ruby 2.0 también puede usar
Esto es básicamente lo mismo que
fuente
__FILE__
es una constante pero__dir__
es un método .Esto le dará el directorio de trabajo del archivo actual.
Ejemplo:
archivo_actual: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
resultado: "/ Users / nemrow / SITM / folder1 / folder2"
fuente
Dir.pwd
y su sugerencia podría diferir potencialmente.Si desea obtener la ruta completa del directorio del archivo rb actual:
fuente
A través de esto, puede obtener la ruta absoluta de cualquier archivo ubicado en cualquier directorio.
Esto volverá
fuente