297

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

しかし、irbから次のことを試みたところ、「許可が拒否されました」というエラーが発生しました。

File.new(Dir.new(".").path).expand
4

6 に答える 6

549

Dir.pwdトリックをするようです。

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

于 2009-12-21T01:31:05.403 に答える
193

File.expand_path File.dirname(__FILE__)このコマンドが呼び出されたファイルに関連するディレクトリを返します。

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

于 2011-09-26T08:27:12.097 に答える
64

現在実行中のスクリプトからの相対パスについては、Ruby2.0以降も使用できます。

__dir__

つまり、これは基本的にと同じです

File.dirname(__FILE__)
于 2015-03-19T15:25:14.627 に答える
6

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

File.dirname(__FILE__)

例:

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

結果:「/ Users / nemrow / SITM / folder1/folder2」

于 2014-07-14T17:11:18.963 に答える
6

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

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

これは戻ります

=> "/User/abc/xyz/some-dir/some-file-name"
于 2017-03-06T11:38:48.613 に答える
5

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

File.expand_path('../', __FILE__)
于 2016-10-06T03:26:58.197 に答える