diff options
Diffstat (limited to 'lib/rubygems/spec_fetcher.rb')
-rw-r--r-- | lib/rubygems/spec_fetcher.rb | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb index 29db889af5..66b4ee36c7 100644 --- a/lib/rubygems/spec_fetcher.rb +++ b/lib/rubygems/spec_fetcher.rb @@ -183,29 +183,23 @@ class Gem::SpecFetcher end def load_specs(source_uri, file) - file_name = "#{file}.#{Gem.marshal_version}.gz" - - spec_path = source_uri + file_name - - cache_dir = cache_dir spec_path - - local_file = File.join(cache_dir, file_name).chomp '.gz' + file_name = "#{file}.#{Gem.marshal_version}" + spec_path = source_uri + "#{file_name}.gz" + cache_dir = cache_dir spec_path + local_file = File.join(cache_dir, file_name) + loaded = false if File.exist? local_file then - local_size = File.stat(local_file).size - - remote_file = spec_path.dup - remote_file.path = remote_file.path.chomp '.gz' - remote_size = @fetcher.fetch_size remote_file - - spec_dump = Gem.read_binary local_file if remote_size == local_size - end + spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file) - unless spec_dump then + if spec_dump.empty? then + spec_dump = Gem.read_binary local_file + else + loaded = true + end + else + spec_dump = @fetcher.fetch_path spec_path loaded = true - - spec_dump_gz = @fetcher.fetch_path spec_path - spec_dump = Gem.gunzip spec_dump_gz end specs = Marshal.load spec_dump |