Sha256: c2ccdc9d3d16dd9efdfb0b05793c726d14440bac9218c4399f391e98074a9060
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
module Ramaze # === Usage # # require 'ramaze/contrib/gems' # # # set install dir # # Ramaze::Gems.options :install_dir => __DIR__('../asdf') # # module Ramaze::Gems # gem 'haml' # gem 'sequel', '>=1.2.0' # gem 'hpricot', :source => 'http://code.whytheluckystiff.net' # gem 'aws-s3', :lib => 'aws/s3' # gem 'oldmoe-mysql', :source => 'http://gems.github.com', :lib => 'mysqlplus' # setup # end # module Gems @gems = [] class << self def gem(name, version = nil, options = {}) case version when String options[:version] = version when Hash options.merge!(version) end @gems << GemStone.new(name, options) end # options include: # :install_dir => where to install gems # :extconf => additional options for building extensions def options opts = {} @options ||= {} @options.merge! opts unless opts.empty? @options end def setup opts = {} options(opts) @gems.each{|gem| gem.setup } end end class GemStone attr_reader :name, :options def initialize(name, options = {}) @name, @options = name, options require 'rubygems/dependency_installer' @installer = Gem::DependencyInstaller.new(@options) end def setup(ran = false) Gem.activate(name, *[options[:version]].compact) require options[:lib] || name rescue LoadError => error puts error return if ran install setup(ran = true) end def install if extconf = (options[:extconf] || Gems.options[:extconf]) old_argv = ARGV.clone ARGV.replace extconf.split(' ') end print "Installing #{name}..." @installer.install name, options[:version] puts "done.\n\n" ensure ARGV.replace old_argv if extconf end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ramaze-2009.03 | lib/ramaze/contrib/gems.rb |