diff --git a/CHANGELOG.md b/CHANGELOG.md index e4248371..afd8e204 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Unreleased +* Better check `freeze` option support in JSON compile cache. + Previously `JSON.load_file(..., freeze: true)` would be cached even when the msgpack version is missing support for it. + # 1.10.1 * Fix `Kernel#autoload`'s fallback path always being executed. diff --git a/lib/bootsnap/compile_cache/json.rb b/lib/bootsnap/compile_cache/json.rb index 7f81152c..143f826a 100644 --- a/lib/bootsnap/compile_cache/json.rb +++ b/lib/bootsnap/compile_cache/json.rb @@ -52,7 +52,9 @@ def init! self.msgpack_factory = MessagePack::Factory.new self.supported_options = [:symbolize_names] if ::JSON.parse('["foo"]', freeze: true).first.frozen? - self.supported_options = [:freeze] + if MessagePack.load(MessagePack.dump("foo"), freeze: true).frozen? + self.supported_options = [:freeze] + end end supported_options.freeze end