Sha256: 67f927ad5bb51538d9b5b3a4d1ea1db76e28c4139f41e4e189b8b3e5041b91ac

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

# will define methods in Page class
unless defined?(::Page)
  class ::Page
  end
end

module Aerogel::Pages

  def self.registered(app)
    setup_reloader(app) if Aerogel.config.aerogel.reloader?

    # module initialization
    Aerogel::Pages.reset!
  end

  def self.setup_reloader(app)
    app.use Aerogel::Reloader, :'db/model', before: true do
      Aerogel::Pages.reset!
    end
  end

  def self.reset!
    @registered_page_block_types ||= {}
  end

  def self.registered_page_block_types
    @registered_page_block_types ||= {}
  end

  def self.register_page_block_type( type, model )
    registered_page_block_types[type] = model

    # define multiple objects accessor
    ::Page.send( :define_method, :"#{type}s" ) { page_blocks.where( :_type => model ) }

    # define single (first) object accessor
    ::Page.send( :define_method, type ) { page_blocks.where( :_type => model ).first }

  end

  def self.create_page_block( type, *args )
    type = type.to_sym
    if registered_page_block_types[type].nil?
      raise ArgumentError.new( "Invalid page block type: '#{type}'")
    end
    registered_page_block_types[type].new( *args )
  end

end # module Aerogel::Pages

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
aerogel-pages-1.4.16 lib/aerogel/pages/core.rb
aerogel-pages-1.4.14 lib/aerogel/pages/core.rb