summaryrefslogtreecommitdiff
path: root/lib/rubygems/spec_fetcher.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/spec_fetcher.rb')
-rw-r--r--lib/rubygems/spec_fetcher.rb32
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