Class: PrivateGemServer::Scanner

Inherits:
Object
  • Object
show all
Defined in:
lib/private_gem_server/scanner.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, sources_path, temp_path) ⇒ Scanner

Returns a new instance of Scanner.



4
5
6
7
# File 'lib/private_gem_server/scanner.rb', line 4

def initialize(app, sources_path, temp_path)
  @app = app
  @sources = Sources.new YAML.load_file(sources_path), temp_path
end

Instance Method Details

#call(env) ⇒ Object



9
10
11
12
# File 'lib/private_gem_server/scanner.rb', line 9

def call(env)
  scan! if env['REQUEST_METHOD'] == 'GET' && env['PATH_INFO'] !~ %r{^/gems/}
  @app.call env
end

#scan!Object



14
15
16
17
18
# File 'lib/private_gem_server/scanner.rb', line 14

def scan!
  @sources.values.map do |source|
    Thread.new { source.refresh! }.tap { |thread| thread.abort_on_exception = true }
  end.each(&:join)
end