class GemOnDemand::Project
Constants
- DEPENDENCIES
- MAX_VERSIONS
- VERSION_REX
Attributes
cache[RW]
name[RW]
user[RW]
Public Class Methods
new(user, name, cache)
click to toggle source
# File lib/gem_on_demand/project.rb, line 9 def initialize(user, name, cache) self.user = user self.name = name self.cache = cache end
Public Instance Methods
build_gem(version)
click to toggle source
# File lib/gem_on_demand/project.rb, line 29 def build_gem(version) cache.fetch("gem-#{version}") do checkout_version("v#{version}") gemspec = "#{name}.gemspec" Utils.remove_signing(gemspec) Utils.sh("gem build #{gemspec}") File.read("#{name}-#{version}.gem") end end
dependencies()
click to toggle source
# File lib/gem_on_demand/project.rb, line 15 def dependencies cache.fetch DEPENDENCIES do versions.last(MAX_VERSIONS).map do |version| next unless dependencies = dependencies_for_version(version) { :name => name, :number => version.sub(/^v/, ""), :platform => "ruby", :dependencies => dependencies } end.compact end end
Private Instance Methods
checkout_version(version)
click to toggle source
# File lib/gem_on_demand/project.rb, line 49 def checkout_version(version) Utils.sh("git checkout #{version} --force") end
dependencies_for_version(version)
click to toggle source
# File lib/gem_on_demand/project.rb, line 41 def dependencies_for_version(version) cache.fetch "dependencies-#{version}" do checkout_version(version) result = Utils.sh(%{ruby -e 'print Marshal.dump(eval(File.read("#{name}.gemspec")).runtime_dependencies.map{|d| [d.name, d.requirement.to_s]})'}, :fail => :allow) Marshal.load(result) if result end end
versions()
click to toggle source
# File lib/gem_on_demand/project.rb, line 53 def versions Utils.sh("git tag").split($/).grep(VERSION_REX) end