Class: Ossert::Workers::FetchBestgemsPage

Inherits:
Object
  • Object
show all
Includes:
Process, Sidekiq::Worker
Defined in:
lib/ossert/workers/fetch_bestgems_page.rb

Instance Method Summary collapse

Instance Method Details

#perform(pages, type = :total) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ossert/workers/fetch_bestgems_page.rb', line 11

def perform(pages, type = :total)
  pages = Array(pages)
  bestgems_page_processor = Kernel.const_get(
    "Ossert::Fetch::Bestgems#{type.to_s.capitalize}Stat"
  )
  pages.each do |page|
    puts "Processing Bestgems page: '#{page}'"
    bestgems_page_processor.process_page(page) do |_, _, gem_name|
      puts "Processing project: '#{gem_name}'"
      pid = fork do
        Ossert.init
        next(puts("Skipping project: '#{gem_name}'")) if Ossert::Project.exist?(gem_name)
        Ossert::Project.fetch_all(gem_name)
        sleep(10)
      end
      waitpid(pid)
    end
  end
end