🙆‍♀️

JSON.loadじゃなくてJSON.parse使えとrubocopに怒られました

2022/12/05に公開

これは株式会社SUPER STUDIO Advent Calendar 2022の4日目の記事です。
https://adventar.org/calendars/8255

ごきげんよう🌸
株式会社SUPER STUDIOでコーポレートエンジニアを担当している@bboobbaaです!

現在社内ツールをRubyで開発しています。
Ruby on Railsはチュートリアルはやったことがあったのですが、業務では永遠に触ることはないと思っていたので、今更ですがRailsの制約の多さに奮闘しております。

jsonファイルを読み込んだときに試行錯誤したはなしです。

ファイルを読み込んでJSON.load()をしたらrubocopに怒られました

File.open(path) do |f|
  JSON.load(f)
end
Offenses:

xxx: C: [Corrected] Security/JSONLoad: Prefer JSON.parse over JSON.load.
        JSON.load(f)
             ^^^^

999 files inspected, 1 offense detected, 1 offense corrected

えっどゆこと?

flori/jsonの実装を見たところ、load()parse()をラップしておりました。

開いて読み込んでparse()するだけでよかった

File.open(path) do |f|
  JSON.parse(f.read)
end
Syntax OK

これで終わりません

よくよくflori/jsonを読んでみたところ、ファイルを読み込むメソッドがありました。

JSON.load_file(path)

これで思い通りに動きました\(^o^)/

結論:jsonファイル読み込むならJSON.load_file()

公式ドキュメントよりもソース読んだほうが早かったぴえん

Discussion