module Birdie::Controller
Attributes
builder_klass[RW]
exec_block[RW]
Public Class Methods
extended(base)
click to toggle source
# File lib/birdie/controller.rb, line 9 def self.extended(base) base.send(:include, Lotus::Controller) end
Public Instance Methods
builder(klass)
click to toggle source
# File lib/birdie/controller.rb, line 13 def builder(klass) @builder_klass = klass end
create_action(&block)
click to toggle source
# File lib/birdie/controller.rb, line 25 def create_action(&block) define_action('Create', &block) end
destroy_action(&block)
click to toggle source
# File lib/birdie/controller.rb, line 33 def destroy_action(&block) define_action('Destroy', &block) end
index_action(&block)
click to toggle source
# File lib/birdie/controller.rb, line 17 def index_action(&block) define_action('Index', &block) end
show_action(&block)
click to toggle source
# File lib/birdie/controller.rb, line 21 def show_action(&block) define_action('Show', &block) end
update_action(&block)
click to toggle source
# File lib/birdie/controller.rb, line 29 def update_action(&block) define_action('Update', &block) end
Private Instance Methods
action_block()
click to toggle source
# File lib/birdie/controller.rb, line 47 def action_block Proc.new do class << self attr_accessor :builder_klass, :exec_block end def call(params) items = instance_eval(&self.class.exec_block) collection = self.class.builder_klass.new(items, context: self).serialize self.body = JSON.dump(collection) end def path_for(*args) Birdie::Application.app.router.path(*args) end end end
call(params)
click to toggle source
# File lib/birdie/controller.rb, line 53 def call(params) items = instance_eval(&self.class.exec_block) collection = self.class.builder_klass.new(items, context: self).serialize self.body = JSON.dump(collection) end
define_action(name, &block)
click to toggle source
# File lib/birdie/controller.rb, line 39 def define_action(name, &block) block ||= Proc.new{ [] } action(name, &action_block) const = self.const_get(name) const.exec_block = block const.builder_klass = @builder_klass end
path_for(*args)
click to toggle source
# File lib/birdie/controller.rb, line 59 def path_for(*args) Birdie::Application.app.router.path(*args) end