Saya menjalankan Ruby di Windows, tetapi saya tidak tahu apakah itu akan membuat perbedaan. Yang ingin saya lakukan adalah mendapatkan jalur absolut direktori kerja saat ini. Apakah ini mungkin dari irb? Rupanya dari skrip itu mungkin menggunakanFile.expand_path(__FILE__)
Tetapi dari irb saya mencoba yang berikut dan mendapat kesalahan "Izin ditolak":
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Dexygen
sumber
sumber
Dir.pwd
) atau apakah Anda ingin direktori di mana skrip yang sedang berjalan berada (yang manaFile.dirname(__FILE__)
)? Bayangkan memanggil skrip dari tempat lain (sepertiruby testdirectory/testscript.rb
) di sini, keduanya akan berbeda!File.expand_path(__FILE__)
" - karena__FILE__
lokasi adalah hewan yang berbeda dari dir bekerja saat ini (yangDir.pwd
).Jawaban:
Dir.pwd
sepertinya melakukan trik.http://ruby-doc.org/core/Dir.html#method-c-pwd
sumber
pwd
), yang mungkin berada di tempat yang sama sekali berbeda dari tempat file skrip berada.File.expand_path File.dirname(__FILE__)
akan mengembalikan direktori relatif ke file dari mana perintah ini dipanggil.Tetapi
Dir.pwd
mengembalikan direktori kerja (hasil identik dengan mengeksekusipwd
di terminal Anda)sumber
Dir.pwd
setara denganpwd -P
.exec('pwd -L')
akan mendapatkan nilai yang setara dengan pwd di terminal (pwd biasanya merupakan bash builtin, dan tidak menyelesaikan tautan simbolik).bundle exec rspec spec
di direktori '/ project', sedangkan di file 'spec / spec_helper.rb', nilaiDir.pwd
masih akan menjadi '/ project'.Adapun path relatif terhadap skrip yang sedang dijalankan, karena Ruby 2.0 Anda juga dapat menggunakan
Jadi ini pada dasarnya sama dengan
sumber
__FILE__
adalah konstanta tetapi__dir__
metode .Ini akan memberi Anda direktori kerja file saat ini.
Contoh:
current_file: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
hasil: "/ Pengguna / nemrow / SITM / folder1 / folder2"
sumber
Dir.pwd
dan saran Anda mungkin berbeda.Jika Anda ingin mendapatkan path lengkap dari direktori file rb saat ini:
sumber
Melalui ini Anda bisa mendapatkan path absolut dari file apa pun yang terletak di direktori mana pun.
Ini akan kembali
sumber