質問: File.open(json_file_path) do |io| JSON.load(io) end puts json_data["key"]["key1"] #value1 ``` ターミナルで、sample.rbと同階層の場所で下記rubyコマンドを実行したら、 正常にtest.txtを読み込めましたが、 sample.rbと違う階層で下記rubyコマンドを実行したら、test.txtを読み込めず、どこかのファイルを読み込もうとしてエラーを起こしました。 ``` ruby sample.rb ``` エラーメッセージ。 ``` C:/Ruby24-x64/lib/ruby/2.4.0/json/common.rb:156:in `parse': 751: unexpected token at ' (JSON::ParserError) ``` ### 質問 ・質問1。 File.openで指定するパスは、ターミナルのrubyコマンドを実行した場所を起点とした相対パスになりますか? ・質問2。 File.openもしくは別の方法で、外部JSONファイルを実行ファイルを起点とした相対パスで読み込む方法のご教示をお願い致します。 ### 補足情報(FW/ツールのバージョンなど) ruby 2.4.5p335 ### 追記 requireメソッドの場合は、require_relativeメソッドに代えることで解決できたのですが、 File.openメソッドにはそのような相対パスの指定方法、もしくは他の代替メソッドはないですか?
回答: 回答2 今実行中のfileの full path が `__FILE__`で得られます。 ですから *FILE* を起点にすればOK たとえば `File.expand_path('../test.txt',__FILE__)`