From 347448104317552ee48a19f3bbe6d761a58c64c6 Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Sat, 16 May 2015 03:11:35 +0000 Subject: [PATCH] Marshal metadata --- lib/jekyll/regenerator.rb | 10 ++++++++-- test/test_regenerator.rb | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/regenerator.rb b/lib/jekyll/regenerator.rb index 9c9300ce..8ddfa269 100644 --- a/lib/jekyll/regenerator.rb +++ b/lib/jekyll/regenerator.rb @@ -131,7 +131,7 @@ module Jekyll # Returns nothing. def write_metadata File.open(metadata_file, 'w') do |f| - f.write(metadata.to_yaml) + f.write(Marshal.dump(metadata)) end end @@ -158,7 +158,13 @@ module Jekyll # Returns the read metadata. def read_metadata @metadata = if !disabled? && File.file?(metadata_file) - SafeYAML.load(File.read(metadata_file)) + content = File.read(metadata_file) + + begin + Marshal.load(content) + rescue TypeError + SafeYAML.load(content) + end else {} end diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index f1d4b8cb..060fc524 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -132,6 +132,18 @@ class TestRegenerator < JekyllUnitTest assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"] end + should "read legacy yaml metadata" do + metadata_file = source_dir(".jekyll-metadata") + @regenerator = Regenerator.new(@site) + + File.open(metadata_file, 'w') do |f| + f.write(@regenerator.metadata.to_yaml) + end + + @regenerator = Regenerator.new(@site) + assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"] + end + # Methods should "be able to add a path to the metadata" do