module Sprinkle
module Installers
# = Ruby Gem Package Installer
#
# The gem package installer installs ruby gems.
#
# The installer has a single optional configuration: source.
# By changing source you can specify a given ruby gems
# repository from which to install.
#
# == Example Usage
#
# First, a simple installation of the magic_beans gem:
#
# package :magic_beans do
# description "Beans beans they're good for your heart..."
# gem 'magic_beans'
# end
#
# Second, install magic_beans gem from github:
#
# package :magic_beans do
# gem 'magic_beans_package' do
# source 'http://gems.github.com'
# end
# end
#
# As you can see, setting options is as simple as creating a
# block and calling the option as a method with the value as
# its parameter.
class Gem < Installer
attr_accessor :gem #:nodoc:
def initialize(parent, gem, options = {}, &block) #:nodoc:
super parent, options, &block
@gem = gem
end
def source(location = nil) #:nodoc:
# package defines an installer called source so here we specify a method directly
# rather than rely on the automatic options processing since packages' method missing
# won't be run
return @options[:source] unless location
@options[:source] = location
end
protected
# rubygems 0.9.5+ installs dependencies by default, and does platform selection
def install_commands #:nodoc:
cmd = "gem install #{gem}"
cmd << " --version '#{version}'" if version
cmd << " --source #{source}" if source
cmd << " --install-dir #{repository}" if option?(:repository)
cmd << " --no-rdoc --no-ri" unless option?(:build_docs)
cmd << " --http-proxy #{http_proxy}" if option?(:http_proxy)
cmd << " -- #{build_flags}" if option?(:build_flags)
cmd
end
end
end
end