Ruby 1.9.3 を使用して、システム管理用のいくつかの小さな Ruby スクリプトを作成しました。私が使用する1つのスクリプトでは:
File.dirname(__FILE__)
スクリプトファイルのディレクトリを取得します。これは相対パスを返しますが、2 番目のスクリプトからスクリプトを呼び出すとFile.dirname
、絶対パスが返されます。
Ruby Docの例では絶対リターン パスがリストされていますが、Ruby フォーラムでユーザーがdirname
相対パスのみを返す必要があるという議論を見つけました。
Ruby Forums から提案されたソリューションを使用File.expand_path
して、常に次のような絶対パスを取得しています。
File.expand_path(File.dirname(__FILE__))
dirname
しかし、動作を一貫させる方法はありますか?
アップデート:
Janathan Cairs の回答を拡張するために、2 つのスクリプトを作成しました。
s1.rb:
puts "External script __FILE__: #{File.dirname(__FILE__)}"
s0.rb:
puts "Local script __FILE__: #{File.dirname(__FILE__)}"
require './s1.rb'
./s0.rb を実行すると、次の出力が得られます。
Local script __FILE__: .
External script __FILE__: /home/kenneth/Pictures/wp/rip_vault