私はWindows上でRubyを実行していますが、それによって違いが生じるかどうかはわかりません。私がしたいのは、現在の作業ディレクトリの絶対パスを取得することだけです。これはirbから可能ですか?どうやらスクリプトからそれはFile.expand_path(__FILE__)
を使って可能です
しかし、irbから私は次のことを試してみて、 "Permission denied"というエラーが出ました。
File.new(Dir.new(".").path).expand
Dir.pwd
がうまくいっているようです。
File.expand_path File.dirname(__FILE__)
は、このコマンドが呼び出されたファイルからの相対ディレクトリを返します。
しかしDir.pwd
は作業ディレクトリを返します(端末でpwd
を実行した場合と同じ結果になります)。
現在実行しているスクリプトからの相対パスはRuby 2.なので使用することもできます
__dir__
だからこれは基本的に同じです
File.dirname(__FILE__)
これにより、現在のファイルの作業ディレクトリがわかります。
File.dirname(__FILE__)
例:
current_file: "/Users/nemrow/SITM/folder1/folder2/Amazon.rb"
結果: "/ Users/nemrow/SITM/folder1/folder2"
現在のrbファイルのディレクトリのフルパスを取得したい場合は、
File.expand_path('../', __FILE__)
これにより、任意のディレクトリにある任意のファイルの絶対パスを取得できます。
File.join(Dir.pwd,'some-dir','some-file-name')
これは戻ります
=> "/User/abc/xyz/some-dir/some-file-name"