Zainspirowany "Getting the source directory of a Bash script from within", jaki jest sposób Ruby to zrobić?Czy skrypt Ruby może określić, w którym katalogu się znajduje?
Odpowiedz
File.dirname(__FILE__)
poda ścieżkę odnoszącą się do uruchamianego skryptu. File.expand_path(File.dirname(__FILE__))
dadzą ci absolutną ścieżkę.
ENV ["PWD"] wydaje mi się najprostszym sposobem pod Linuksem. Nie znam sposobu, w jaki agnostyk może działać w systemie OS.
Dzięki! Dobry dla mojej ogólnej wiedzy o Linuksie. –
To jest katalog domowy, a nie bieżący katalog roboczy lub katalog, w którym znajduje się skrypt. –
B * gger, brak snu to zrobi. Miałem na myśli oczywiście ENV ["PWD"]. Ale odpowiedź Ba jest znacznie lepsza. – Shadowfirebird
Zastosowanie __dir__
Jak Ruby 2.0, __dir__
jest najprostszym sposobem, aby dostać to. To
Zwraca też w postaci bezwzględną ścieżkę do katalogu z plikiem z którego ta metoda jest wywoływana.
Zobacz dokumentację __dir__
i "Why is __FILE__ uppercase and __dir__ lowercase?".
Cóż, oprócz" __dir__ "będącego poprawną odpowiedzią, dzięki za połączenie z różnicą wielkich i małych liter, było moje pierwsze pytanie po znalezieniu go jako dobrze :) – SidOfc
użycie __dir__
File.dirname(__FILE__)
nie jest właściwym sposobem na uzyskanie katalog, w którym jest przechowywany skrypt.
Na początku katalog roboczy i katalog z plikiem skryptowym jest taki sam, ale może się zmienić.
Na przykład:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
do pliku skryptu zapisanego w /Desktop/tmp
działa da wyświetlamy
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
to niewłaściwy sposób to zrobić i może powodować błędy. \t Należy pamiętać, że po użyciu polecenia Dir.chdir może to być inny katalog niż miejsce przechowywania skryptu. "__dir__" jest właściwym sposobem na zrobienie tego. –
To wydaje się być jedyną drogą dla każdego, kto utknął w Rubim <2.0 –