6 attr_accessor :name, :root, :db_config, :db_schema, :packages
8 def initialize(name, root, db_config_file, db_schema, &block)
11 self.db_config = YAML.load(IO.read(db_config_file))
12 self.db_schema = db_schema
17 def load(database = nil)
19 packages.each {|pkg| pkg.load}
21 database_name = db_config[database][:database]
24 system "mysqladmin -uroot drop #{database_name} --force"
25 system "mysqladmin -uroot create #{database_name}"
30 raise "Unknown database #{database}"
33 ActiveRecord::Base.silence do
34 ActiveRecord::Base.configurations = db_config
35 ActiveRecord::Base.establish_connection database
46 # name , scmroot, scmpath
47 # :rails, "http://svn.rubyonrails.org/rails", "trunk"
48 def package(name, *args, &block)
49 packages << Package.new(name, root, *args, &block)
54 attr_accessor :name, :root, :scmroot, :scmpath, :scmrev, :libraries
56 def initialize(*args, &block)
57 self.name, self.root, self.scmroot, self.scmpath, self.scmrev = args
58 self.scmrev ||= "HEAD"
63 def add_library(name, options = {})
71 libraries << Library.new(name, library_config)
74 def after_load(&block)
79 libraries.each {|lib| lib.load}
80 @after_load.call if @after_load
85 attr_accessor :name, :root, :scmroot, :scmpath, :scmrev, :requires
87 def initialize(name, config)
89 self.root = config[:root]
90 self.scmroot = config[:scmroot]
91 self.scmpath = config[:scmpath]
92 self.scmrev = config[:scmrev]
93 self.requires = config[:requires]
94 @after_update = config[:after_update]
97 # #{root}/trunk/HEAD/activerecord
99 File.expand_path(File.join(root, scmpath, scmrev, name))
103 unless File.directory?(support_directory)
105 @after_update.call self if @after_update
107 $LOAD_PATH << load_path
108 requires.each { |r| require r }
112 File.join(support_directory, "lib")
116 system "svn co -r#{scmrev} #{scmuri} #{support_directory}"
119 # http://dev.rubyonrails.org/rails/trunk/activerecord
121 File.join(scmroot, scmpath, name)
125 scmroot == other.scmroot