Module: Exegesis::Database::ClassMethods
- Defined in:
- lib/exegesis/database.rb
Instance Method Summary collapse
-
#design(design_name, opts = {}, &block) ⇒ Object
declare a design document for this database.
-
#designs ⇒ Object
A hash mapping design names to class names.
- #designs_directory(dir = nil) ⇒ Object
Instance Method Details
#design(design_name, opts = {}, &block) ⇒ Object
declare a design document for this database. Creates a new class and yields a given block to the class to configure the design document and declare views; See Class methods for Exegesis::Design
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/exegesis/database.rb', line 29 def design design_name, opts={}, &block klass_name = "#{design_name.to_s.capitalize}Design" klass = const_set(klass_name, Class.new(Exegesis::Design)) designs[design_name] = klass klass.design_directory = opts[:directory] || self.designs_directory + design_name.to_s klass.design_name = opts[:name] || design_name.to_s klass.compose_canonical klass.class_eval &block define_method design_name do @designs ||= {} @designs[design_name] ||= klass.new(self) end end |
#designs ⇒ Object
A hash mapping design names to class names.
23 24 25 |
# File 'lib/exegesis/database.rb', line 23 def designs @designs ||= {} end |
#designs_directory(dir = nil) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/exegesis/database.rb', line 14 def designs_directory dir=nil if dir @designs_directory = Pathname.new(dir) else @designs_directory ||= Pathname.new('designs') end end |