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.pwdParece 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.pwddevuelve el directorio de trabajo (resultados idénticos a la ejecuciónpwden su terminal)fuente
Dir.pwdes 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 specen el directorio '/ project', mientras que en el archivo 'spec / spec_helper.rb', el valor deDir.pwdtodaví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.pwdy 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