class Gemstash::DB::Dependency

Sequel model for dependencies table.

Public Class Methods

fetch(gems) { |gem, value| ... } click to toggle source
# File lib/gemstash/db/dependency.rb, line 20
def self.fetch(gems)
  results = db["
    SELECT rubygem.name,
           version.number, version.platform,
           dependency.rubygem_name, dependency.requirements
    FROM rubygems rubygem
    JOIN versions version
      ON version.rubygem_id = rubygem.id
    LEFT JOIN dependencies dependency
      ON dependency.version_id = version.id
    WHERE rubygem.name IN ?
      AND version.indexed = ?", gems.to_a, true].to_a
  results.group_by {|r| r[:name] }.each do |gem, rows|
    requirements = rows.group_by {|r| [r[:number], r[:platform]] }

    value = requirements.map do |version, r|
      deps = r.map {|x| [x[:rubygem_name], x[:requirements]] }
      deps = [] if deps.size == 1 && deps.first.first.nil?

      {
        :name => gem,
        :number => version.first,
        :platform => version.last,
        :dependencies => deps
      }
    end

    yield(gem, value)
  end
end
insert_by_spec(version_id, spec) click to toggle source
# File lib/gemstash/db/dependency.rb, line 9
def self.insert_by_spec(version_id, spec)
  spec.runtime_dependencies.each do |dep|
    requirements = dep.requirement.requirements
    requirements = requirements.map {|r| "#{r.first} #{r.last}" }
    requirements = requirements.join(", ")
    create(version_id: version_id,
           rubygem_name: dep.name,
           requirements: requirements)
  end
end