Sha256: efe12b155fe2fec8e0b019fbd7700afb5fa3ed1cbbb62de4c30f5036bc043d13

Contents?: true

Size: 733 Bytes

Versions: 9

Compression:

Stored size: 733 Bytes

Contents

class Module
  #  Usage:
  #
  #  class Model
  #    module ModelAspect
  #      declarations do
  #        has_many :aspect_details
  #        validates_presence_of :main_aspect
  #        etc
  #      end
  #    end
  #  end
  def declarations &blk
    raise "There should be only one declarations block" if defined? declarations_block

    class << self
      attr_accessor :declarations_block

      def included(mod)
        mod.class_eval(&declarations_block) unless declarations_block.nil?
      rescue Exception => ex # When autoloading, you never see real exception unless this rescue
        puts ex.message
        puts ex.backtrace.join("\n")
        raise ex
      end
    end
    self.declarations_block = blk
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
programmable-ventouse-0.0.1 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.10 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.2 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.3 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.4 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.5 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.7 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.8 lib/ventouse/module_declarations.rb
programmable-ventouse-0.0.9 lib/ventouse/module_declarations.rb