Class: Gemirro::Indexer

Inherits:
Gem::Indexer
  • Object
show all
Defined in:
lib/gemirro/indexer.rb

Overview

The Indexer class is responsible for downloading useful file directly on the source host, such as specs-..gz, marshal information, etc…

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dest_directoryString

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/gemirro/indexer.rb', line 17

class Indexer < ::Gem::Indexer
  attr_accessor :files, :quick_marshal_dir, :directory, :dest_directory

  ##
  # Generate indicies on the destination directory
  #
  # @return [Array]
  #
  def install_indicies
    verbose = ::Gem.configuration.really_verbose
    say "Downloading index into production dir #{@dest_directory}" if verbose

    files = @files
    files.delete @quick_marshal_dir if files.include? @quick_dir

    if files.include?(@quick_marshal_dir) && !files.include?(@quick_dir)
      files.delete @quick_marshal_dir
      dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
      FileUtils.mkdir_p(File.dirname(dst_name), verbose: verbose)
      FileUtils.rm_rf(dst_name, verbose: verbose)
      FileUtils.mv(@quick_marshal_dir, dst_name,
                   verbose: verbose, force: true)
    end

    files = files.map do |path|
      path.sub(/^#{Regexp.escape @directory}\/?/, '')
    end

    files.each do |file|
      dst_name = File.join @dest_directory, file
      next if File.exist?(dst_name) &&
        (File.mtime(dst_name) >= Time.now - 360)

      resp = Http.get("#{Gemirro.configuration.source.host}/#{file}")
      next unless resp.code == 200
      MirrorFile.new(dst_name).write(resp.body)
    end
  end
end

#directoryString

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/gemirro/indexer.rb', line 17

class Indexer < ::Gem::Indexer
  attr_accessor :files, :quick_marshal_dir, :directory, :dest_directory

  ##
  # Generate indicies on the destination directory
  #
  # @return [Array]
  #
  def install_indicies
    verbose = ::Gem.configuration.really_verbose
    say "Downloading index into production dir #{@dest_directory}" if verbose

    files = @files
    files.delete @quick_marshal_dir if files.include? @quick_dir

    if files.include?(@quick_marshal_dir) && !files.include?(@quick_dir)
      files.delete @quick_marshal_dir
      dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
      FileUtils.mkdir_p(File.dirname(dst_name), verbose: verbose)
      FileUtils.rm_rf(dst_name, verbose: verbose)
      FileUtils.mv(@quick_marshal_dir, dst_name,
                   verbose: verbose, force: true)
    end

    files = files.map do |path|
      path.sub(/^#{Regexp.escape @directory}\/?/, '')
    end

    files.each do |file|
      dst_name = File.join @dest_directory, file
      next if File.exist?(dst_name) &&
        (File.mtime(dst_name) >= Time.now - 360)

      resp = Http.get("#{Gemirro.configuration.source.host}/#{file}")
      next unless resp.code == 200
      MirrorFile.new(dst_name).write(resp.body)
    end
  end
end

#filesArray

Returns:

  • (Array)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/gemirro/indexer.rb', line 17

class Indexer < ::Gem::Indexer
  attr_accessor :files, :quick_marshal_dir, :directory, :dest_directory

  ##
  # Generate indicies on the destination directory
  #
  # @return [Array]
  #
  def install_indicies
    verbose = ::Gem.configuration.really_verbose
    say "Downloading index into production dir #{@dest_directory}" if verbose

    files = @files
    files.delete @quick_marshal_dir if files.include? @quick_dir

    if files.include?(@quick_marshal_dir) && !files.include?(@quick_dir)
      files.delete @quick_marshal_dir
      dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
      FileUtils.mkdir_p(File.dirname(dst_name), verbose: verbose)
      FileUtils.rm_rf(dst_name, verbose: verbose)
      FileUtils.mv(@quick_marshal_dir, dst_name,
                   verbose: verbose, force: true)
    end

    files = files.map do |path|
      path.sub(/^#{Regexp.escape @directory}\/?/, '')
    end

    files.each do |file|
      dst_name = File.join @dest_directory, file
      next if File.exist?(dst_name) &&
        (File.mtime(dst_name) >= Time.now - 360)

      resp = Http.get("#{Gemirro.configuration.source.host}/#{file}")
      next unless resp.code == 200
      MirrorFile.new(dst_name).write(resp.body)
    end
  end
end

#quick_marshal_dirString

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/gemirro/indexer.rb', line 17

class Indexer < ::Gem::Indexer
  attr_accessor :files, :quick_marshal_dir, :directory, :dest_directory

  ##
  # Generate indicies on the destination directory
  #
  # @return [Array]
  #
  def install_indicies
    verbose = ::Gem.configuration.really_verbose
    say "Downloading index into production dir #{@dest_directory}" if verbose

    files = @files
    files.delete @quick_marshal_dir if files.include? @quick_dir

    if files.include?(@quick_marshal_dir) && !files.include?(@quick_dir)
      files.delete @quick_marshal_dir
      dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
      FileUtils.mkdir_p(File.dirname(dst_name), verbose: verbose)
      FileUtils.rm_rf(dst_name, verbose: verbose)
      FileUtils.mv(@quick_marshal_dir, dst_name,
                   verbose: verbose, force: true)
    end

    files = files.map do |path|
      path.sub(/^#{Regexp.escape @directory}\/?/, '')
    end

    files.each do |file|
      dst_name = File.join @dest_directory, file
      next if File.exist?(dst_name) &&
        (File.mtime(dst_name) >= Time.now - 360)

      resp = Http.get("#{Gemirro.configuration.source.host}/#{file}")
      next unless resp.code == 200
      MirrorFile.new(dst_name).write(resp.body)
    end
  end
end

Instance Method Details

#install_indiciesArray

Generate indicies on the destination directory

Returns:

  • (Array)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/gemirro/indexer.rb', line 25

def install_indicies
  verbose = ::Gem.configuration.really_verbose
  say "Downloading index into production dir #{@dest_directory}" if verbose

  files = @files
  files.delete @quick_marshal_dir if files.include? @quick_dir

  if files.include?(@quick_marshal_dir) && !files.include?(@quick_dir)
    files.delete @quick_marshal_dir
    dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
    FileUtils.mkdir_p(File.dirname(dst_name), verbose: verbose)
    FileUtils.rm_rf(dst_name, verbose: verbose)
    FileUtils.mv(@quick_marshal_dir, dst_name,
                 verbose: verbose, force: true)
  end

  files = files.map do |path|
    path.sub(/^#{Regexp.escape @directory}\/?/, '')
  end

  files.each do |file|
    dst_name = File.join @dest_directory, file
    next if File.exist?(dst_name) &&
      (File.mtime(dst_name) >= Time.now - 360)

    resp = Http.get("#{Gemirro.configuration.source.host}/#{file}")
    next unless resp.code == 200
    MirrorFile.new(dst_name).write(resp.body)
  end
end