Class: Gem::Mirror
- Inherits:
-
Object
- Object
- Gem::Mirror
- Defined in:
- lib/rubygems/mirror/test_setup.rb,
lib/rubygems/mirror.rb
Defined Under Namespace
Modules: TestSetup
Constant Summary collapse
- VERSION =
'1.0.1'
- SPECS_FILE =
"specs.#{Gem.marshal_version}"
- SPECS_FILE_Z =
"specs.#{Gem.marshal_version}.gz"
- DEFAULT_URI =
'http://production.cf.rubygems.org/'
- DEFAULT_TO =
File.join(Gem.user_home, '.gem', 'mirror')
- RUBY =
'ruby'
Instance Method Summary collapse
- #delete_gems ⇒ Object
- #existing_gems ⇒ Object
- #from(*args) ⇒ Object
- #gems ⇒ Object
- #gems_to_delete ⇒ Object
- #gems_to_fetch ⇒ Object
-
#initialize(from = DEFAULT_URI, to = DEFAULT_TO, parallelism = 10) ⇒ Mirror
constructor
A new instance of Mirror.
- #to(*args) ⇒ Object
- #update ⇒ Object
- #update_gems ⇒ Object
- #update_specs ⇒ Object
Constructor Details
#initialize(from = DEFAULT_URI, to = DEFAULT_TO, parallelism = 10) ⇒ Mirror
Returns a new instance of Mirror.
18 19 20 21 22 |
# File 'lib/rubygems/mirror.rb', line 18 def initialize(from = DEFAULT_URI, to = DEFAULT_TO, parallelism = 10) @from, @to = from, to @fetcher = Fetcher.new @pool = Pool.new(parallelism) end |
Instance Method Details
#delete_gems ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rubygems/mirror.rb', line 72 def delete_gems gems_to_delete.each do |g| @pool.job do File.delete(to('gems', g)) yield end end @pool.run_til_done end |
#existing_gems ⇒ Object
49 50 51 |
# File 'lib/rubygems/mirror.rb', line 49 def existing_gems Dir[to('gems', '*.gem')].entries.map { |f| File.basename(f) } end |
#from(*args) ⇒ Object
24 25 26 |
# File 'lib/rubygems/mirror.rb', line 24 def from(*args) File.join(@from, *args) end |
#gems ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rubygems/mirror.rb', line 38 def gems update_specs unless File.exists?(to(SPECS_FILE)) gems = Marshal.load(File.read(to(SPECS_FILE))) gems.map! do |name, ver, plat| # If the platform is ruby, it is not in the gem name "#{name}-#{ver}#{"-#{plat}" unless plat == RUBY}.gem" end gems end |
#gems_to_delete ⇒ Object
57 58 59 |
# File 'lib/rubygems/mirror.rb', line 57 def gems_to_delete existing_gems - gems end |
#gems_to_fetch ⇒ Object
53 54 55 |
# File 'lib/rubygems/mirror.rb', line 53 def gems_to_fetch gems - existing_gems end |
#to(*args) ⇒ Object
28 29 30 |
# File 'lib/rubygems/mirror.rb', line 28 def to(*args) File.join(@to, *args) end |
#update ⇒ Object
83 84 85 86 87 |
# File 'lib/rubygems/mirror.rb', line 83 def update update_specs update_gems cleanup_gems end |
#update_gems ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/rubygems/mirror.rb', line 61 def update_gems gems_to_fetch.each do |g| @pool.job do @fetcher.fetch(from('gems', g), to('gems', g)) yield end end @pool.run_til_done end |
#update_specs ⇒ Object
32 33 34 35 36 |
# File 'lib/rubygems/mirror.rb', line 32 def update_specs specz = to(SPECS_FILE_Z) @fetcher.fetch(from(SPECS_FILE_Z), specz) open(to(SPECS_FILE), 'wb') { |f| f << Gem.gunzip(File.read(specz)) } end |