module Nali::Controller
Attributes
client[R]
params[R]
Public Class Methods
afters()
click to toggle source
# File lib/nali/controller.rb, line 16 def self.afters self.class_variable_get :@@afters end
befores()
click to toggle source
# File lib/nali/controller.rb, line 13 def self.befores self.class_variable_get :@@befores end
included( base )
click to toggle source
# File lib/nali/controller.rb, line 7 def self.included( base ) base.extend self base.class_eval do self.class_variable_set :@@befores, [] self.class_variable_set :@@afters, [] self.class_variable_set :@@selectors, {} def self.befores self.class_variable_get :@@befores end def self.afters self.class_variable_get :@@afters end def self.selectors self.class_variable_get :@@selectors end end end
new( client, message )
click to toggle source
# File lib/nali/controller.rb, line 25 def initialize( client, message ) @client = client @message = message @params = message[ :params ] end
selectors()
click to toggle source
# File lib/nali/controller.rb, line 19 def self.selectors self.class_variable_get :@@selectors end
Public Instance Methods
_create()
click to toggle source
# File lib/nali/controller.rb, line 39 def _create model = model_class.new params model.access_action( :create, client ) do |options| permit_params options if ( model = model_class.new( params ) ).save trigger_success model.get_sync_params( client )[0] client.sync model else trigger_failure end end end
_update()
click to toggle source
# File lib/nali/controller.rb, line 50 def _update if model = model_class.find_by_id( params[ :id ] ) model.access_action( :update, client ) do |options| permit_params options if model.update( params ) trigger_success model.get_sync_params( client )[0] model.sync client else trigger_failure end end end end
after( &closure )
click to toggle source
# File lib/nali/controller.rb, line 91 def after( &closure ) register_after closure: closure, except: [] end
after_except( *methods, &closure )
click to toggle source
# File lib/nali/controller.rb, line 99 def after_except( *methods, &closure ) register_after closure: closure, except: methods end
after_only( *methods, &closure )
click to toggle source
# File lib/nali/controller.rb, line 95 def after_only( *methods, &closure ) register_after closure: closure, only: methods end
before( &closure )
click to toggle source
# File lib/nali/controller.rb, line 79 def before( &closure ) register_before closure: closure, except: [] end
before_except( *methods, &closure )
click to toggle source
# File lib/nali/controller.rb, line 87 def before_except( *methods, &closure ) register_before closure: closure, except: methods end
before_only( *methods, &closure )
click to toggle source
# File lib/nali/controller.rb, line 83 def before_only( *methods, &closure ) register_before closure: closure, only: methods end
clients()
click to toggle source
# File lib/nali/controller.rb, line 31 def clients Nali::Clients.list end
destroy()
click to toggle source
# File lib/nali/controller.rb, line 62 def destroy if model = model_class.find_by_id( params[ :id ] ) model.access_action( :destroy, client ) do |options| model.destroy() trigger_success model.id end else trigger_failure end end
runAction( name )
click to toggle source
# File lib/nali/controller.rb, line 119 def runAction( name ) if name == :select selector = params[ :selector ].to_sym @params = params[ :params ] self.select selector else self.runFilters name self.send( name ) unless @stopped self.runFilters name, :after end end
save()
click to toggle source
# File lib/nali/controller.rb, line 35 def save params[ :id ].to_i.to_s == params[ :id ].to_s ? _update : _create end
select( name )
click to toggle source
# File lib/nali/controller.rb, line 107 def select( name ) selected = nil self.runFilters name if !@stopped and selector = self.class.selectors[ name ] selected = instance_eval( &selector ) end self.runFilters name, :after if !@stopped and selected and ( selected.is_a?( ActiveRecord::Relation ) or selected.is_a?( ActiveRecord::Base ) ) client.sync selected end end
selector( name, &closure )
click to toggle source
# File lib/nali/controller.rb, line 103 def selector( name, &closure ) selectors[ name ] = closure end
stop()
click to toggle source
# File lib/nali/controller.rb, line 131 def stop @stopped = true end
trigger_failure( params = nil )
click to toggle source
# File lib/nali/controller.rb, line 75 def trigger_failure( params = nil ) client.send_json( { action: :_failure, params: params, journal_id: @message[ :journal_id ] } ) end
trigger_success( params = nil )
click to toggle source
# File lib/nali/controller.rb, line 71 def trigger_success( params = nil ) client.send_json( { action: :_success, params: params, journal_id: @message[ :journal_id ] } ) end
Protected Instance Methods
runFilters( name, type = :before )
click to toggle source
# File lib/nali/controller.rb, line 137 def runFilters( name, type = :before ) filters = if type == :before then self.class.befores else self.class.afters end filters.each do |obj| if !@stopped and ( ( obj[ :only ] and obj[ :only ].include?( name ) ) or ( obj[ :except ] and !obj[ :except ].include?( name ) ) ) instance_eval( &obj[ :closure ] ) end end end
Private Instance Methods
model_class()
click to toggle source
# File lib/nali/controller.rb, line 161 def model_class Object.const_get model_name end
model_name()
click to toggle source
# File lib/nali/controller.rb, line 165 def model_name self.class.name.gsub( 'sController', '' ).to_sym end
permit_params( filter )
click to toggle source
# File lib/nali/controller.rb, line 156 def permit_params( filter ) params.keys.each { |key| params.delete( key ) unless filter.include?( key ) } params end
register_after( obj )
click to toggle source
# File lib/nali/controller.rb, line 152 def register_after( obj ) afters.push obj end
register_before( obj )
click to toggle source
# File lib/nali/controller.rb, line 148 def register_before( obj ) befores.push obj end