Module: Nali::Controller
- Defined in:
- lib/nali/controller.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Class Method Summary collapse
Instance Method Summary collapse
- #_create ⇒ Object
- #_update ⇒ Object
- #after(&closure) ⇒ Object
- #after_except(*methods, &closure) ⇒ Object
- #after_only(*methods, &closure) ⇒ Object
- #before(&closure) ⇒ Object
- #before_except(*methods, &closure) ⇒ Object
- #before_only(*methods, &closure) ⇒ Object
- #clients ⇒ Object
- #destroy ⇒ Object
- #initialize(client, message) ⇒ Object
- #runAction(name) ⇒ Object
- #save ⇒ Object
- #select(name) ⇒ Object
- #selector(name, &closure) ⇒ Object
- #stop ⇒ Object
- #trigger_failure(params = nil) ⇒ Object
- #trigger_success(params = nil) ⇒ Object
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
5 6 7 |
# File 'lib/nali/controller.rb', line 5 def client @client end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
5 6 7 |
# File 'lib/nali/controller.rb', line 5 def params @params end |
Class Method Details
.included(base) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
Instance Method Details
#_create ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/nali/controller.rb', line 39 def _create model = model_class.new params model.access_action( :create, client ) do || permit_params 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 ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/nali/controller.rb', line 50 def _update if model = model_class.find_by_id( params[ :id ] ) model.access_action( :update, client ) do || permit_params if model.update( params ) trigger_success model.get_sync_params( client )[0] model.sync client else trigger_failure end end end end |
#after(&closure) ⇒ Object
91 92 93 |
# File 'lib/nali/controller.rb', line 91 def after( &closure ) register_after closure: closure, except: [] end |
#after_except(*methods, &closure) ⇒ Object
99 100 101 |
# File 'lib/nali/controller.rb', line 99 def after_except( *methods, &closure ) register_after closure: closure, except: methods end |
#after_only(*methods, &closure) ⇒ Object
95 96 97 |
# File 'lib/nali/controller.rb', line 95 def after_only( *methods, &closure ) register_after closure: closure, only: methods end |
#before(&closure) ⇒ Object
79 80 81 |
# File 'lib/nali/controller.rb', line 79 def before( &closure ) register_before closure: closure, except: [] end |
#before_except(*methods, &closure) ⇒ Object
87 88 89 |
# File 'lib/nali/controller.rb', line 87 def before_except( *methods, &closure ) register_before closure: closure, except: methods end |
#before_only(*methods, &closure) ⇒ Object
83 84 85 |
# File 'lib/nali/controller.rb', line 83 def before_only( *methods, &closure ) register_before closure: closure, only: methods end |
#clients ⇒ Object
31 32 33 |
# File 'lib/nali/controller.rb', line 31 def clients Nali::Clients.list end |
#destroy ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/nali/controller.rb', line 62 def destroy if model = model_class.find_by_id( params[ :id ] ) model.access_action( :destroy, client ) do || model.destroy() trigger_success model.id end else trigger_failure end end |
#initialize(client, message) ⇒ Object
25 26 27 28 29 |
# File 'lib/nali/controller.rb', line 25 def initialize( client, ) @client = client @message = @params = [ :params ] end |
#runAction(name) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 |
# 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 ⇒ Object
35 36 37 |
# File 'lib/nali/controller.rb', line 35 def save params[ :id ].to_i.to_s == params[ :id ].to_s ? _update : _create end |
#select(name) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# 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) ⇒ Object
103 104 105 |
# File 'lib/nali/controller.rb', line 103 def selector( name, &closure ) selectors[ name ] = closure end |
#stop ⇒ Object
131 132 133 |
# File 'lib/nali/controller.rb', line 131 def stop @stopped = true end |
#trigger_failure(params = nil) ⇒ Object
75 76 77 |
# 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) ⇒ Object
71 72 73 |
# 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 |