Estou executando o Ruby no Windows, embora não saiba se isso deve fazer a diferença. Tudo o que quero fazer é obter o caminho absoluto do diretório de trabalho atual. Isso é possível no irb? Aparentemente, a partir de um script, é possível usarFile.expand_path(__FILE__)
Mas, do irb, tentei o seguinte e recebi o erro "Permissão negada":
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Dexygen
fonte
fonte
Dir.pwd
) ou o diretório em que o script atualmente em execução está localizado (qual éFile.dirname(__FILE__)
)? Imagine chamar um script de qualquer outro lugar (comoruby testdirectory/testscript.rb
) aqui, os dois serão diferentes!File.expand_path(__FILE__)
" - porque__FILE__
a localização de um animal é diferente do diretório de trabalho atual (que éDir.pwd
).Respostas:
Dir.pwd
parece fazer o truque.http://ruby-doc.org/core/Dir.html#method-c-pwd
fonte
pwd
), que pode estar em algum lugar completamente diferente daquele em que o arquivo de script está localizado.File.expand_path File.dirname(__FILE__)
retornará o diretório relativo ao arquivo do qual este comando é chamado.Mas
Dir.pwd
retorna o diretório ativo (resultados idênticos aos da execuçãopwd
no seu terminal)fonte
Dir.pwd
é equivalente apwd -P
.exec('pwd -L')
obterá o equivalente a pwd no terminal (o pwd normalmente é um bash embutido e não resolve os links simbólicos).bundle exec rspec spec
no diretório '/ project', enquanto no arquivo 'spec / spec_helper.rb', o valor deDir.pwd
ainda será '/ project'.Quanto ao caminho relativo ao script em execução atual, desde o Ruby 2.0 você também pode usar
Então isso é basicamente o mesmo que
fonte
__FILE__
é uma constante, mas__dir__
é um método .Isso fornecerá o diretório de trabalho do arquivo atual.
Exemplo:
current_file: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
resultado: "/ Usuários / nemrow / SITM / folder1 / folder2"
fonte
Dir.pwd
e sua sugestão pode ser potencialmente diferente.Se você deseja obter o caminho completo do diretório do arquivo rb atual:
fonte
Com isso, você pode obter o caminho absoluto de qualquer arquivo localizado em qualquer diretório.
Isso retornará
fonte