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 |