Я использую Ruby на Windows, хотя я не знаю, должно ли это иметь значение. Все, что я хочу сделать, это получить абсолютный путь текущего рабочего каталога. Это возможно от IRB? Как видно из скрипта можно использоватьFile.expand_path(__FILE__)
Но из irb я попробовал следующее и получил ошибку «Отказано в доступе»:
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Dexygen
источник
источник
Dir.pwd
) или вы хотите каталог, в котором находится текущий запущенный скрипт (который естьFile.dirname(__FILE__)
)? Представьте, что вы вызываете скрипт из любого другого места (например,ruby testdirectory/testscript.rb
здесь), оба будут разными!File.expand_path(__FILE__)
» - потому что__FILE__
местоположение отличается от текущего рабочего каталога (который естьDir.pwd
).Ответы:
Dir.pwd
кажется, добивается цели.http://ruby-doc.org/core/Dir.html#method-c-pwd
источник
pwd
), который может быть где-то совершенно отличным от того, где находится файл скрипта.File.expand_path File.dirname(__FILE__)
вернет каталог относительно файла, из которого вызывается эта команда.Но
Dir.pwd
возвращает рабочий каталог (результаты идентичны выполнениюpwd
в вашем терминале)источник
Dir.pwd
эквивалентноpwd -P
.exec('pwd -L')
получит эквивалент pwd в терминале (pwd обычно встроен в bash и не разрешает символические ссылки).bundle exec rspec spec
в каталоге «/ project», а в файле «spec / spec_helper.rb» значение по-Dir.pwd
прежнему будет «/ project».Что касается пути относительно текущего исполняемого скрипта, то с Ruby 2.0 вы также можете использовать
Так что это в основном так же, как
источник
__FILE__
что это константа, но__dir__
метод .Это даст вам рабочий каталог текущего файла.
Пример:
current_file: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
результат: "/ Users / nemrow / SITM / folder1 / folder2"
источник
Dir.pwd
и ваше предложение потенциально может отличаться.Если вы хотите получить полный путь к каталогу текущего файла rb:
источник
Благодаря этому вы можете получить абсолютный путь к любому файлу, расположенному в любом каталоге.
Это вернется
источник