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'
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
unless spec_dump then
loaded = true
spec_dump_gz = @fetcher.fetch_path spec_path
spec_dump = Gem.gunzip spec_dump_gz
end
specs = Marshal.load spec_dump
if loaded and @update_cache then
begin
FileUtils.mkdir_p cache_dir
open local_file, 'wb' do |io|
Marshal.dump specs, io
end
rescue
end
end
specs
end