web-dev-qa-db-ja.com

irbから現在の作業ディレクトリの絶対パスを取得する方法

私はWindows上でRubyを実行していますが、それによって違いが生じるかどうかはわかりません。私がしたいのは、現在の作業ディレクトリの絶対パスを取得することだけです。これはirbから可能ですか?どうやらスクリプトからそれはFile.expand_path(__FILE__)を使って可能です

しかし、irbから私は次のことを試してみて、 "Permission denied"というエラーが出ました。

File.new(Dir.new(".").path).expand
255
George Jempty

Dir.pwdがうまくいっているようです。

http://Ruby-doc.org/core/Dir.html#method-c-pwd

474
user85509

File.expand_path File.dirname(__FILE__)は、このコマンドが呼び出されたファイルからの相対ディレクトリを返します。

しかしDir.pwdは作業ディレクトリを返します(端末でpwdを実行した場合と同じ結果になります)。

178
Psylone

現在実行しているスクリプトからの相対パスはRuby 2.なので使用することもできます

__dir__

だからこれは基本的に同じです

File.dirname(__FILE__)
53
udo

これにより、現在のファイルの作業ディレクトリがわかります。

File.dirname(__FILE__)

例:

current_file: "/Users/nemrow/SITM/folder1/folder2/Amazon.rb"

結果: "/ Users/nemrow/SITM/folder1/folder2"

現在のrbファイルのディレクトリのフルパスを取得したい場合は、

File.expand_path('../', __FILE__)
3

これにより、任意のディレクトリにある任意のファイルの絶対パスを取得できます。

File.join(Dir.pwd,'some-dir','some-file-name')

これは戻ります

=> "/User/abc/xyz/some-dir/some-file-name"
2
yeshwant singh