class BleedingEdge

Public Class Methods

new() click to toggle source
# File lib/bleeding_edge.rb, line 7
def initialize
  @installed_gems = Array.new
  @fetcher = Gem::SpecFetcher.new
end

Public Instance Methods

find_future_versions_for(gem) click to toggle source
# File lib/bleeding_edge.rb, line 19
def find_future_versions_for(gem)
  version_filter = Gem::Requirement.create("> " + gem.installed_version)
  dep = Gem::Dependency.new gem.name, version_filter
  matching_specs = @fetcher.find_matching dep, true, true, false
  matching_specs.each do |spec|
    gem.add_future_version spec[0][1].version
  end
  puts "Found #{gem.count} versions for #{dep}"
end
find_futures_for_gems() click to toggle source
# File lib/bleeding_edge.rb, line 12
def find_futures_for_gems
  puts "Looking for most recent versions of installed gems for platform #{Gem.platforms.to_a}..."
  @installed_gems.each do |gem|
    find_future_versions_for(gem)
  end
end
find_installed_gems() click to toggle source
# File lib/bleeding_edge.rb, line 29
def find_installed_gems
  Gem.searcher.find_all("*").each do |gem|
    @installed_gems << InstalledGemFuture.new(gem)
  end

  puts "Found #{@installed_gems.size.to_s} installed gems in scope"
end
output_as_html() click to toggle source
# File lib/bleeding_edge.rb, line 37
def output_as_html
  File.open("bleeding-edge-report.html", "w") do |f|
    @installed_gems.sort! { |a,b| b.count <=> a.count}

    f.write File.open("report-header.html", "r").readlines
    @installed_gems.each do |future|
      f.write future.to_html
    end
    f.write File.open("report-footer.html", "r").readlines
  end
end