前提・実現したいこと
外部JSONファイルを、実行ファイルを起点としたパスで読み込みたいのですが、
その方法があればご教示お願いします。
試したこと
同階層にtest.txtファイルとsample.rbファイルを作成しました。
test.txt
txt
1{ 2 "key": { 3 "key1":"value1", 4 "key2":"value2" 5 } 6}
sample.rb
ruby
1require 'json' 2 3json_file_path = 'test.txt' 4 5json_data = File.open(json_file_path) do |io| 6 JSON.load(io) 7end 8 9puts 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 '<xml Version="1.0"> (JSON::ParserError)
質問
・質問1。
File.openで指定するパスは、ターミナルのrubyコマンドを実行した場所を起点とした相対パスになりますか?
・質問2。
File.openもしくは別の方法で、外部JSONファイルを実行ファイルを起点とした相対パスで読み込む方法のご教示をお願い致します。
補足情報(FW/ツールのバージョンなど)
ruby 2.4.5p335
追記
requireメソッドの場合は、require_relativeメソッドに代えることで解決できたのですが、
File.openメソッドにはそのような相対パスの指定方法、もしくは他の代替メソッドはないですか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/17 08:47