From: Dobrica Pavlinusic Date: Wed, 26 May 2010 12:17:18 +0000 (+0200) Subject: track mtime of data files X-Git-Url: http://git.rot13.org/?p=MojoFacets.git;a=commitdiff_plain;h=4444a4503d8f0475e55f8b66ff593f70a72e1ffc track mtime of data files This allows reload of data files if they changed on disk --- diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index a5ae43f..8587d9f 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -47,11 +47,15 @@ sub index { sub _load_path { my ( $self, $path ) = @_; - return if defined $loaded->{$path}->{data}; - my $full_path = $self->app->home->rel_file( 'data/' . $path ); die "$full_path $!" unless -r $full_path; + if ( defined $loaded->{$path}->{data} ) { + my $mtime = (stat($full_path))[9]; + return if $loaded->{$path}->{mtime} == $mtime; + warn "reload $full_path, modified ", time() - $mtime, " seconds ago\n"; + } + # we could use Mojo::JSON here, but it's too slow # $data = from_json read_file $path; my $data = read_file $full_path; @@ -149,6 +153,7 @@ sub _load_path { stats => $stats, full_path => $full_path, size => -s $full_path, + mtime => (stat($full_path))[9], data => $data, };