nifty_services 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1015 -12
- data/daily_news.log +7 -0
- data/lib/nifty_services/base_create_service.rb +12 -12
- data/lib/nifty_services/base_delete_service.rb +9 -9
- data/lib/nifty_services/base_service.rb +44 -136
- data/lib/nifty_services/base_update_service.rb +15 -15
- data/lib/nifty_services/configuration.rb +4 -3
- data/lib/nifty_services/extensions/callbacks_interface.rb +171 -0
- data/lib/nifty_services/util.rb +10 -0
- data/lib/nifty_services/version.rb +1 -1
- data/lib/nifty_services.rb +5 -0
- data/test.rb +82 -0
- metadata +6 -2
data/daily_news.log
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Logfile created on 2016-07-15 17:46:01 -0300 by logger.rb/53141
|
2
|
+
I, [2016-07-15T17:46:01.453040 #30030] INFO -- : Routine Details: Send daily news email to user Rafael Fidelis(rafa_fidelis@yahoo.com.br)
|
3
|
+
I, [2016-07-15T17:46:01.453179 #30030] INFO -- : Routine started at: 2016-07-15 17:46:01 -0300
|
4
|
+
W, [2016-07-15T17:46:01.453464 #30030] WARN -- : Something went wrong
|
5
|
+
E, [2016-07-15T17:46:01.484243 #30030] ERROR -- : Error sending email to user. See details below :(
|
6
|
+
E, [2016-07-15T17:46:01.484330 #30030] ERROR -- : ["translation missing: en.nifty_services.errors.users.yet_received_daily_news_mail"]
|
7
|
+
I, [2016-07-15T17:46:01.484470 #30030] INFO -- : Routine ended at: 2016-07-15 17:46:01 -0300
|
@@ -7,20 +7,20 @@ module NiftyServices
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def execute
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
execute_action do
|
11
|
+
with_before_and_after_callbacks(:create) do
|
12
|
+
if can_execute_action?
|
13
|
+
@record = build_record
|
14
|
+
|
15
|
+
if save_record
|
16
|
+
after_execute_success_response
|
17
|
+
else
|
18
|
+
errors = create_error_response(@record)
|
19
|
+
after_error_response(errors)
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
22
|
-
|
23
|
-
success?
|
24
24
|
end
|
25
25
|
|
26
26
|
private
|
@@ -57,7 +57,7 @@ module NiftyServices
|
|
57
57
|
record_type.send(:new, record_params)
|
58
58
|
end
|
59
59
|
|
60
|
-
def
|
60
|
+
def can_execute?
|
61
61
|
if validate_ip_on_create? && !can_create_with_ip?
|
62
62
|
return forbidden_error!(%s(users.ip_temporarily_blocked))
|
63
63
|
end
|
@@ -2,22 +2,22 @@ module NiftyServices
|
|
2
2
|
class BaseDeleteService < BaseCrudService
|
3
3
|
|
4
4
|
def execute
|
5
|
-
|
6
|
-
|
7
|
-
if
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
execute_action do
|
6
|
+
with_before_and_after_callbacks(:delete) do
|
7
|
+
if can_execute_action?
|
8
|
+
if destroy_record
|
9
|
+
success_response
|
10
|
+
else
|
11
|
+
bad_request_error(@record.errors)
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
14
|
-
|
15
|
-
success?
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
19
|
def destroy_record
|
20
|
-
@record.destroy
|
20
|
+
@record.try(:destroy) || @record.try(:delete)
|
21
21
|
end
|
22
22
|
|
23
23
|
def can_execute_action?
|
@@ -1,47 +1,19 @@
|
|
1
1
|
module NiftyServices
|
2
2
|
class BaseService
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
CALLBACKS = [
|
7
|
-
:after_initialize,
|
8
|
-
:before_error,
|
9
|
-
:after_error,
|
10
|
-
:before_success,
|
11
|
-
:after_success,
|
12
|
-
:before_create,
|
13
|
-
:after_create,
|
14
|
-
:before_update,
|
15
|
-
:after_update,
|
16
|
-
:before_delete,
|
17
|
-
:after_delete,
|
18
|
-
:before_action,
|
19
|
-
:after_action
|
20
|
-
].freeze
|
21
|
-
|
22
|
-
@@registered_callbacks = Hash.new {|k,v| k[v] = Hash.new }
|
4
|
+
include Extensions::CallbacksInterface
|
23
5
|
|
24
|
-
|
25
|
-
|
26
|
-
method_name = "#{method_name.to_s.gsub(/\Z_callback/, '')}_callback"
|
27
|
-
|
28
|
-
@@registered_callbacks[self.name.to_sym][callback_name] ||= []
|
29
|
-
@@registered_callbacks[self.name.to_sym][callback_name] << method_name
|
30
|
-
|
31
|
-
register_callback_action(method_name, &block)
|
32
|
-
end
|
33
|
-
|
34
|
-
def register_callback_action(callback_name, &block)
|
35
|
-
define_method(callback_name, &block)
|
36
|
-
end
|
6
|
+
attr_reader :response_status, :response_status_code
|
7
|
+
attr_reader :options, :errors, :logger
|
37
8
|
|
9
|
+
class << self
|
38
10
|
def register_error_response_method(reason_string, status_code)
|
39
11
|
NiftyServices::Configuration.add_response_error_method(reason_string, status_code)
|
40
12
|
define_error_response_method(reason_string, status_code)
|
41
13
|
end
|
42
14
|
|
43
15
|
def define_error_response_method(reason_string, status_code)
|
44
|
-
method_name =
|
16
|
+
method_name = Util.normalized_callback_name(reason_string, '_error')
|
45
17
|
|
46
18
|
define_method method_name do |message_key, options = {}|
|
47
19
|
error(status_code, message_key, options)
|
@@ -53,19 +25,15 @@ module NiftyServices
|
|
53
25
|
end
|
54
26
|
end
|
55
27
|
|
56
|
-
CALLBACKS.each do |callback_name|
|
57
|
-
# empty method call (just returns nil)
|
58
|
-
define_method callback_name, -> {}
|
59
|
-
end
|
60
|
-
|
61
28
|
def initialize(options = {}, initial_response_status = 400)
|
62
29
|
@options = options.to_options!
|
63
30
|
@errors = []
|
31
|
+
@logger = options[:logger] || default_logger
|
32
|
+
@executed = false
|
64
33
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
call_callback(:after_initialize)
|
34
|
+
with_before_and_after_callbacks(:initialize) do
|
35
|
+
set_response_status(initial_response_status)
|
36
|
+
end
|
69
37
|
end
|
70
38
|
|
71
39
|
def valid?
|
@@ -84,6 +52,10 @@ module NiftyServices
|
|
84
52
|
@response_status ||= :bad_request
|
85
53
|
end
|
86
54
|
|
55
|
+
def changed_attributes
|
56
|
+
[]
|
57
|
+
end
|
58
|
+
|
87
59
|
def changed?
|
88
60
|
changed_attributes.any?
|
89
61
|
end
|
@@ -96,16 +68,6 @@ module NiftyServices
|
|
96
68
|
valid_object?(@user, user_class)
|
97
69
|
end
|
98
70
|
|
99
|
-
def callback_fired?(callback_name)
|
100
|
-
return (
|
101
|
-
callback_fired_in?(@fired_callbacks, callback_name) ||
|
102
|
-
callback_fired_in?(@custom_fired_callbacks, callback_name) ||
|
103
|
-
callback_fired_in?(@custom_fired_callbacks, "#{callback_name}_callback")
|
104
|
-
)
|
105
|
-
end
|
106
|
-
|
107
|
-
alias :callback_called? :callback_fired?
|
108
|
-
|
109
71
|
def option_exists?(key)
|
110
72
|
@options && @options.key?(key.to_sym)
|
111
73
|
end
|
@@ -118,27 +80,40 @@ module NiftyServices
|
|
118
80
|
!option_enabled?(key)
|
119
81
|
end
|
120
82
|
|
121
|
-
def
|
122
|
-
|
123
|
-
|
124
|
-
@registered_callbacks[callback_name.to_sym] << method_name
|
83
|
+
def add_error(error)
|
84
|
+
add_method = error.is_a?(Array) ? :concat : :push
|
85
|
+
@errors.send(add_method, error)
|
125
86
|
end
|
126
87
|
|
127
|
-
def
|
128
|
-
|
129
|
-
@callbacks_actions[cb_name] = block
|
88
|
+
def default_logger
|
89
|
+
NiftyServices.config.logger
|
130
90
|
end
|
131
91
|
|
132
|
-
|
133
|
-
|
134
|
-
|
92
|
+
alias :log :logger
|
93
|
+
|
94
|
+
def executed?
|
95
|
+
@executed == true
|
135
96
|
end
|
136
97
|
|
98
|
+
alias :runned? :executed?
|
99
|
+
|
137
100
|
private
|
138
|
-
def
|
139
|
-
|
140
|
-
|
141
|
-
|
101
|
+
def can_execute?
|
102
|
+
not_implemented_exception(__method__)
|
103
|
+
end
|
104
|
+
|
105
|
+
def execute_action(&block)
|
106
|
+
return nil if executed?
|
107
|
+
|
108
|
+
with_before_and_after_callbacks(:execute) do
|
109
|
+
if can_execute?
|
110
|
+
yield(block) if block_given?
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
@executed = true
|
115
|
+
|
116
|
+
self # allow chaining
|
142
117
|
end
|
143
118
|
|
144
119
|
def success_response(status = :ok)
|
@@ -187,10 +162,12 @@ module NiftyServices
|
|
187
162
|
end
|
188
163
|
|
189
164
|
def error(status, message_key, options = {})
|
165
|
+
@success = false
|
166
|
+
|
190
167
|
with_before_and_after_callbacks(:error) do
|
191
168
|
set_response_status(status)
|
192
|
-
error_message = process_error_message_for_key(message_key, options)
|
193
169
|
|
170
|
+
error_message = process_error_message_for_key(message_key, options)
|
194
171
|
add_error(error_message)
|
195
172
|
|
196
173
|
error_message
|
@@ -206,20 +183,6 @@ module NiftyServices
|
|
206
183
|
return false
|
207
184
|
end
|
208
185
|
|
209
|
-
def call_callback(callback_name)
|
210
|
-
callback_name = callback_name.to_s.underscore.to_sym
|
211
|
-
|
212
|
-
if self.respond_to?(callback_name, true) # include private methods
|
213
|
-
@fired_callbacks[callback_name.to_sym] = true
|
214
|
-
|
215
|
-
invoke_callback(method(callback_name))
|
216
|
-
call_registered_callbacks_for(callback_name)
|
217
|
-
end
|
218
|
-
|
219
|
-
# allow chained methods
|
220
|
-
self
|
221
|
-
end
|
222
|
-
|
223
186
|
def valid_object?(record, expected_class)
|
224
187
|
record.present? && record.is_a?(expected_class)
|
225
188
|
end
|
@@ -263,61 +226,6 @@ module NiftyServices
|
|
263
226
|
message
|
264
227
|
end
|
265
228
|
|
266
|
-
def with_before_and_after_callbacks(callback_basename, &block)
|
267
|
-
call_callback(:"before_#{callback_basename}")
|
268
|
-
|
269
|
-
response = yield(block) if block_given?
|
270
|
-
|
271
|
-
call_callback(:"after_#{callback_basename}")
|
272
|
-
|
273
|
-
response
|
274
|
-
end
|
275
|
-
|
276
|
-
def call_registered_callbacks_for(callback_name)
|
277
|
-
instance_call_all_custom_registered_callbacks_for(callback_name)
|
278
|
-
class_call_all_custom_registered_callbacks_for(callback_name)
|
279
|
-
end
|
280
|
-
|
281
|
-
def instance_call_all_custom_registered_callbacks_for(callback_name)
|
282
|
-
@fired_callbacks[callback_name] = true
|
283
|
-
|
284
|
-
callbacks = @registered_callbacks[callback_name.to_sym]
|
285
|
-
|
286
|
-
callbacks.each do |cb|
|
287
|
-
if callback = @callbacks_actions[cb.to_sym]
|
288
|
-
@custom_fired_callbacks[cb.to_sym] = true
|
289
|
-
invoke_callback(callback)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
def class_call_all_custom_registered_callbacks_for(callback_name)
|
295
|
-
classes_chain = self.class.ancestors.map(&:to_s).grep /\ANiftyServices/
|
296
|
-
klasses = @@registered_callbacks.keys.map(&:to_s) & classes_chain
|
297
|
-
|
298
|
-
klasses.each do |klass|
|
299
|
-
class_call_all_custom_registered_callbacks_for_class(klass, callback_name)
|
300
|
-
end
|
301
|
-
end
|
302
|
-
|
303
|
-
def class_call_all_custom_registered_callbacks_for_class(class_name, callback_name)
|
304
|
-
class_callbacks = @@registered_callbacks[class_name.to_sym]
|
305
|
-
callbacks = class_callbacks[callback_name.to_sym] || []
|
306
|
-
|
307
|
-
callbacks.each do |cb|
|
308
|
-
@custom_fired_callbacks[cb.to_sym] = true
|
309
|
-
invoke_callback(method(cb))
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
def callback_fired_in?(callback_list, callback_name)
|
314
|
-
return callback_list[callback_name.to_sym].present?
|
315
|
-
end
|
316
|
-
|
317
|
-
def invoke_callback(method)
|
318
|
-
method.call
|
319
|
-
end
|
320
|
-
|
321
229
|
NiftyServices::Configuration.response_errors_list.each do |reason_string, status_code|
|
322
230
|
define_error_response_method(reason_string, status_code)
|
323
231
|
end
|
@@ -2,21 +2,21 @@ module NiftyServices
|
|
2
2
|
class BaseUpdateService < BaseCrudService
|
3
3
|
|
4
4
|
def execute
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
execute_action do
|
6
|
+
with_before_and_after_callbacks(:update) do
|
7
|
+
if can_execute_action?
|
8
|
+
@updated_record = update_record
|
9
|
+
@updated_record ||= @record
|
10
|
+
|
11
|
+
if success_updated?
|
12
|
+
success_response
|
13
|
+
else
|
14
|
+
errors = update_errors
|
15
|
+
bad_request_error(errors) if errors.present?
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
18
|
-
|
19
|
-
success?
|
20
20
|
end
|
21
21
|
|
22
22
|
def changed_attributes
|
@@ -27,7 +27,7 @@ module NiftyServices
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def changed_attributes_array
|
30
|
-
|
30
|
+
record_allowed_params.keys
|
31
31
|
end
|
32
32
|
|
33
33
|
def success_updated?
|
@@ -39,7 +39,7 @@ module NiftyServices
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def update_record
|
42
|
-
@record.class.send(:update, @record.id,
|
42
|
+
@record.class.send(:update, @record.id, record_allowed_params)
|
43
43
|
end
|
44
44
|
|
45
45
|
def can_execute_action?
|
@@ -72,7 +72,7 @@ module NiftyServices
|
|
72
72
|
|
73
73
|
def after_success
|
74
74
|
@old_record = @record.dup
|
75
|
-
@record
|
75
|
+
@record = @updated_record
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -31,7 +31,7 @@ module NiftyServices
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
attr_reader :logger, :options
|
34
|
+
attr_reader :logger, :options, :i18n_namespace
|
35
35
|
|
36
36
|
attr_accessor :user_class, :service_concerns_namespace
|
37
37
|
|
@@ -39,11 +39,12 @@ module NiftyServices
|
|
39
39
|
@options = options
|
40
40
|
@service_concerns_namespace = default_service_concerns_namespace
|
41
41
|
@user_class = options[:user_class] || default_user_class
|
42
|
+
@i18n_namespace = @options[:i18n_namespace] || default_i18n_namespace
|
42
43
|
@logger = options[:logger] || default_logger
|
43
44
|
end
|
44
45
|
|
45
|
-
def
|
46
|
-
|
46
|
+
def default_i18n_namespace
|
47
|
+
DEFAULT_I18N_NAMESPACE
|
47
48
|
end
|
48
49
|
|
49
50
|
private
|
@@ -0,0 +1,171 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module NiftyServices
|
4
|
+
module Extensions::CallbacksInterface
|
5
|
+
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
CALLBACKS = [
|
9
|
+
:before_initialize,
|
10
|
+
:after_initialize,
|
11
|
+
:before_execute,
|
12
|
+
:after_execute,
|
13
|
+
:before_error,
|
14
|
+
:after_error,
|
15
|
+
:before_success,
|
16
|
+
:after_success,
|
17
|
+
:before_create,
|
18
|
+
:after_create,
|
19
|
+
:before_update,
|
20
|
+
:after_update,
|
21
|
+
:before_delete,
|
22
|
+
:after_delete,
|
23
|
+
:before_action,
|
24
|
+
:after_action
|
25
|
+
].freeze
|
26
|
+
|
27
|
+
class_methods do
|
28
|
+
@@registered_callbacks = Hash.new {|k,v| k[v] = Hash.new }
|
29
|
+
|
30
|
+
def register_callback(callback_name, method_name, &block)
|
31
|
+
method_name = Util.normalized_callback_name(method_name)
|
32
|
+
|
33
|
+
@@registered_callbacks[self.name.to_sym][callback_name] ||= []
|
34
|
+
@@registered_callbacks[self.name.to_sym][callback_name] << method_name
|
35
|
+
|
36
|
+
register_callback_action(method_name, &block)
|
37
|
+
end
|
38
|
+
|
39
|
+
def register_callback_action(callback_name, &block)
|
40
|
+
define_method(callback_name, &block)
|
41
|
+
end
|
42
|
+
|
43
|
+
CALLBACKS.each do |callback_name|
|
44
|
+
define_method callback_name do |&block|
|
45
|
+
register_callback_action(callback_name, &block)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
included do
|
51
|
+
CALLBACKS.each do |callback_name|
|
52
|
+
# empty method call (just returns nil)
|
53
|
+
define_method callback_name, -> {}
|
54
|
+
end
|
55
|
+
|
56
|
+
def callback_fired?(callback_name)
|
57
|
+
return (
|
58
|
+
callback_fired_in?(@fired_callbacks, callback_name) ||
|
59
|
+
callback_fired_in?(@custom_fired_callbacks, callback_name) ||
|
60
|
+
callback_fired_in?(@custom_fired_callbacks, "#{callback_name}_callback")
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
alias :callback_called? :callback_fired?
|
65
|
+
|
66
|
+
def register_callback(callback_name, method_name, &block)
|
67
|
+
method_name = normalized_callback_name(method_name).to_sym
|
68
|
+
|
69
|
+
@registered_callbacks[callback_name.to_sym] << method_name
|
70
|
+
register_callback_action(callback_name, &block)
|
71
|
+
end
|
72
|
+
|
73
|
+
def register_callback_action(callback_name, &block)
|
74
|
+
cb_name = normalized_callback_name(callback_name).to_sym
|
75
|
+
@callbacks_actions[cb_name.to_sym] = block
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
def callbacks_setup
|
80
|
+
return nil if @callbacks_setup
|
81
|
+
|
82
|
+
@fired_callbacks, @custom_fired_callbacks = {}, {}
|
83
|
+
@callbacks_actions = {}
|
84
|
+
@registered_callbacks = Hash.new {|k,v| k[v] = [] }
|
85
|
+
|
86
|
+
@callbacks_setup = true
|
87
|
+
end
|
88
|
+
|
89
|
+
def call_callback(callback_name)
|
90
|
+
callback_name = callback_name.to_s.underscore.to_sym
|
91
|
+
|
92
|
+
if has_callback?(callback_name)
|
93
|
+
@fired_callbacks[callback_name.to_sym] = true
|
94
|
+
|
95
|
+
invoke_callback(method(callback_name))
|
96
|
+
call_registered_callbacks_for(callback_name)
|
97
|
+
end
|
98
|
+
|
99
|
+
# allow chained methods
|
100
|
+
self
|
101
|
+
end
|
102
|
+
|
103
|
+
def has_callback?(callback_name)
|
104
|
+
_callback_name = normalized_callback_name(callback_name).to_sym
|
105
|
+
# include private methods
|
106
|
+
respond_to?(callback_name, true) || respond_to?(_callback_name, true)
|
107
|
+
end
|
108
|
+
|
109
|
+
def with_before_and_after_callbacks(callback_basename, &block)
|
110
|
+
callbacks_setup
|
111
|
+
|
112
|
+
call_callback(:"before_#{callback_basename}")
|
113
|
+
|
114
|
+
block_response = yield(block) if block_given?
|
115
|
+
|
116
|
+
call_callback(:"after_#{callback_basename}")
|
117
|
+
|
118
|
+
block_response
|
119
|
+
end
|
120
|
+
|
121
|
+
def call_registered_callbacks_for(callback_name)
|
122
|
+
instance_call_all_custom_registered_callbacks_for(callback_name)
|
123
|
+
class_call_all_custom_registered_callbacks_for(callback_name)
|
124
|
+
end
|
125
|
+
|
126
|
+
def instance_call_all_custom_registered_callbacks_for(callback_name)
|
127
|
+
@fired_callbacks[callback_name] = true
|
128
|
+
|
129
|
+
callbacks = @registered_callbacks[callback_name.to_sym]
|
130
|
+
|
131
|
+
callbacks.each do |cb|
|
132
|
+
if callback = @callbacks_actions[cb.to_sym]
|
133
|
+
@custom_fired_callbacks[cb.to_sym] = true
|
134
|
+
invoke_callback(callback)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def class_call_all_custom_registered_callbacks_for(callback_name)
|
140
|
+
classes_chain = self.class.ancestors.map(&:to_s).grep /\ANiftyServices/
|
141
|
+
klasses = @@registered_callbacks.keys.map(&:to_s) & classes_chain
|
142
|
+
|
143
|
+
klasses.each do |klass|
|
144
|
+
class_call_all_custom_registered_callbacks_for_class(klass, callback_name)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def class_call_all_custom_registered_callbacks_for_class(class_name, callback_name)
|
149
|
+
class_callbacks = @@registered_callbacks[class_name.to_sym]
|
150
|
+
callbacks = class_callbacks[callback_name.to_sym] || []
|
151
|
+
|
152
|
+
callbacks.each do |cb|
|
153
|
+
@custom_fired_callbacks[cb.to_sym] = true
|
154
|
+
invoke_callback(method(cb))
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def callback_fired_in?(callback_list, callback_name)
|
159
|
+
return callback_list[callback_name.to_sym].present?
|
160
|
+
end
|
161
|
+
|
162
|
+
def normalized_callback_name(callback_name, prefix = '_callback')
|
163
|
+
Util.normalized_callback_name(callback_name, prefix)
|
164
|
+
end
|
165
|
+
|
166
|
+
def invoke_callback(method)
|
167
|
+
method.call
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
data/lib/nifty_services.rb
CHANGED
@@ -14,6 +14,11 @@ module NiftyServices
|
|
14
14
|
autoload :Configuration, 'nifty_services/configuration'
|
15
15
|
autoload :Error, 'nifty_services/errors'
|
16
16
|
autoload :Errors, 'nifty_services/errors'
|
17
|
+
autoload :Util, 'nifty_services/util'
|
18
|
+
|
19
|
+
module Extensions
|
20
|
+
autoload :CallbacksInterface, 'nifty_services/extensions/callbacks_interface'
|
21
|
+
end
|
17
22
|
|
18
23
|
class << self
|
19
24
|
def configuration(&block)
|