eitil 1.4.1 → 2.0.3

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb +1 -1
  4. data/lib/eitil/railtie.rb +2 -3
  5. data/lib/eitil/version.rb +1 -1
  6. data/spec/dummy_app/app/controllers/application_controller.rb +0 -2
  7. data/spec/dummy_app/app/controllers/users_controller.rb +0 -31
  8. data/spec/dummy_app/config/routes.rb +0 -5
  9. data/spec/dummy_app/db/test.sqlite3 +0 -0
  10. data/spec/spec_helper.rb +0 -2
  11. metadata +2 -27
  12. data/eitil_wrapper/README.md +0 -309
  13. data/eitil_wrapper/lib/eitil_wrapper/callbacks/helper_methods.rb +0 -118
  14. data/eitil_wrapper/lib/eitil_wrapper/callbacks.rb +0 -2
  15. data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +0 -22
  16. data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +0 -72
  17. data/eitil_wrapper/lib/eitil_wrapper/decorators.rb +0 -3
  18. data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb +0 -34
  19. data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job_now.rb +0 -37
  20. data/eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb +0 -11
  21. data/eitil_wrapper/lib/eitil_wrapper/jobs.rb +0 -4
  22. data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +0 -94
  23. data/eitil_wrapper/lib/eitil_wrapper/records/default_calculators.rb +0 -104
  24. data/eitil_wrapper/lib/eitil_wrapper/records/default_scopes.rb +0 -95
  25. data/eitil_wrapper/lib/eitil_wrapper/records/default_sorts.rb +0 -81
  26. data/eitil_wrapper/lib/eitil_wrapper/records.rb +0 -4
  27. data/eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb +0 -48
  28. data/eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb +0 -17
  29. data/eitil_wrapper/lib/eitil_wrapper/request_logger.rb +0 -5
  30. data/eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb +0 -40
  31. data/eitil_wrapper/lib/eitil_wrapper/routes.rb +0 -2
  32. data/eitil_wrapper/lib/eitil_wrapper.rb +0 -9
  33. data/spec/dummy_app/app/decorators/address_decorator.rb +0 -3
  34. data/spec/dummy_app/app/decorators/application_decorator.rb +0 -12
  35. data/spec/dummy_app/app/decorators/user_decorator.rb +0 -19
  36. data/spec/eitil_wrapper/decorators/decorators_spec.rb +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2b711724f69a784e0bc3c374d20fc69a333d7aaf13d14b385eda5e4555f7460
4
- data.tar.gz: 77634b67694ccc4b3491c3109f9f8ce09fb076f7a501bc5bbfee852703b51487
3
+ metadata.gz: f5c9cca8a4db961ae507f9326d97344ccb4de0c92b6c5104b1736b37e10c8498
4
+ data.tar.gz: 5ab03a4673c04380440686de8b702ab6e9f241240cdff749d1ddcf85a753c660
5
5
  SHA512:
6
- metadata.gz: 4cdd22e13e5bfb4225187171da7bb0f4fb600c35b72dd007f0bbada16e0d2f349ad97b1c8355aa5e89cd4a6b42b9776027232f278a97aa5e91a2a6bfa5de7922
7
- data.tar.gz: f3084558965176db0aceebb82e218b6dde618e57ab6cb6ab768a9b5f9a36d98f657d28967d08ddcfe5928dc8529382a6971bc1a94a4bc179f4e15c32167dceb1
6
+ metadata.gz: 62c4d31b23148b143ec87613f8b7e102db21d44709904449c85d938ebfd8b4fe7997814ecb96921ca73964d02aa1354d5214c9534faa6c7ef204c47259f35275
7
+ data.tar.gz: e7b017c534422ecd3b5f4e648def6197817094e7a40a313c4eaebe7794cffd183be51efe7670629044db372fe6a0e8d3c86c2587233b469df990a9b429c70146
data/README.md CHANGED
@@ -12,7 +12,6 @@ Our gem currently exists of five seperate layers (Railties), which can be integr
12
12
 
13
13
  - EitilCore, [docs](/eitil_core) > extends the core classes of Ruby and rails.
14
14
  - EitilSupport, [docs](/eitil_support) > provides utility through stand-alone classes and modules.
15
- - EitilWrapper, [docs](/eitil_wrapper) > wraps core rails operations with extended utilities – such as routing, jobs and decoraters.
16
15
  - EitilStore, [docs](/eitil_store) > stores data in containers, such as Regexp instances.
17
16
  - EitilIntegrate, [docs](/eitil_integrate) > provides seamless integrations with select gems and API's, through helper methods stored in PORO's.
18
17
 
@@ -10,7 +10,7 @@ module EitilIntegrate::RubyXL
10
10
  class << self
11
11
 
12
12
  def exporter_paths
13
- EitilSupport::Directory.files('app/exporters/exporters').select { |path| path.end_with? '_exporter.rb' }
13
+ EitilSupport::Directory.files('app/views/exporters/exporters').select { |path| path.end_with? '_exporter.rb' }
14
14
  end
15
15
 
16
16
  def exporter_names
data/lib/eitil/railtie.rb CHANGED
@@ -6,7 +6,7 @@
6
6
  module Eitil
7
7
 
8
8
  Root = Gem.loaded_specs['eitil']&.full_gem_path
9
- Layers = %w( eitil_core eitil_support eitil_wrapper eitil_store eitil_integrate )
9
+ Layers = %w( eitil_core eitil_support eitil_store eitil_integrate )
10
10
  ApplicationRecordModules = []
11
11
 
12
12
  end
@@ -45,10 +45,9 @@ module Eitil
45
45
  yield Eitil
46
46
  end
47
47
 
48
- config_path = Rails.root + 'config/initializers/eitil.rb'
48
+ config_path = Rails.root + 'config/initializers/internal_engines/eitil.rb'
49
49
 
50
50
  if File.exists? config_path
51
- puts "Loading Eitil config from #{config_path}..."
52
51
  load config_path
53
52
  else
54
53
  puts "Eitil config not found at #{config_path}, resorting to defaults..."
data/lib/eitil/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Eitil
2
2
 
3
- VERSION = '1.4.1'
3
+ VERSION = '2.0.3'
4
4
 
5
5
  end
@@ -1,5 +1,3 @@
1
1
  class ApplicationController < ActionController::Base
2
2
 
3
- include EitilWrapper::ControllerDecorator
4
-
5
3
  end
@@ -3,37 +3,6 @@ class UsersController < ApplicationController
3
3
  before_action :set_user, only: [:show, :edit, :update, :destroy]
4
4
 
5
5
 
6
- # ---
7
- # Tests for EitilWrapper::Decorator
8
-
9
- before_action :set_user, only: [:decorator_a, :decorator_b, :decorator_c, :decorator_d]
10
-
11
- # default
12
- def decorator_a
13
- hash = decorate(@user)
14
- render json: hash
15
- end
16
-
17
- # specific dec_method
18
- def decorator_b
19
- hash = decorate(@user, dec_method: :first_and_last_name)
20
- render json: hash
21
- end
22
-
23
- # post request, with 'isWeb' and 'isMobile' params
24
- def decorator_c
25
- hash = decorate(@user)
26
- render json: hash
27
- end
28
-
29
- # specific dec_class
30
- def decorator_d
31
- hash = decorate(@user, dec_class: :Application, dec_method: :timestamps)
32
- render json: hash
33
- end
34
-
35
- # ---
36
-
37
6
 
38
7
 
39
8
  # GET /users
@@ -4,9 +4,4 @@ Rails.application.routes.draw do
4
4
  resources :addresses
5
5
  resources :users
6
6
 
7
- get 'users/:id/decorator_a' => 'users#decorator_a'
8
- get 'users/:id/decorator_b' => 'users#decorator_b'
9
- post 'users/:id/decorator_c' => 'users#decorator_c'
10
- get 'users/:id/decorator_d' => 'users#decorator_d'
11
-
12
7
  end
Binary file
data/spec/spec_helper.rb CHANGED
@@ -8,13 +8,11 @@ require 'eitil'
8
8
 
9
9
  require "eitil_core/railtie"
10
10
  require "eitil_integrate/railtie"
11
- require "eitil_wrapper/railtie"
12
11
  # require "eitil_store/railtie"
13
12
  # require "eitil_support/railtie"
14
13
 
15
14
  require "eitil_core"
16
15
  require "eitil_integrate"
17
- require "eitil_wrapper"
18
16
  # require "eitil_store"
19
17
  # require "eitil_support"
20
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eitil
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurriaan Schrofer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-12 00:00:00.000000000 Z
11
+ date: 2021-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -271,27 +271,6 @@ files:
271
271
  - eitil_support/lib/eitil_support/stacktrace/audit.rb
272
272
  - eitil_support/lib/eitil_support/stacktrace/call.rb
273
273
  - eitil_support/lib/eitil_support/stacktrace/stack.rb
274
- - eitil_wrapper/README.md
275
- - eitil_wrapper/lib/eitil_wrapper.rb
276
- - eitil_wrapper/lib/eitil_wrapper/callbacks.rb
277
- - eitil_wrapper/lib/eitil_wrapper/callbacks/helper_methods.rb
278
- - eitil_wrapper/lib/eitil_wrapper/decorators.rb
279
- - eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb
280
- - eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
281
- - eitil_wrapper/lib/eitil_wrapper/jobs.rb
282
- - eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb
283
- - eitil_wrapper/lib/eitil_wrapper/jobs/new_job_now.rb
284
- - eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb
285
- - eitil_wrapper/lib/eitil_wrapper/railtie.rb
286
- - eitil_wrapper/lib/eitil_wrapper/records.rb
287
- - eitil_wrapper/lib/eitil_wrapper/records/default_calculators.rb
288
- - eitil_wrapper/lib/eitil_wrapper/records/default_scopes.rb
289
- - eitil_wrapper/lib/eitil_wrapper/records/default_sorts.rb
290
- - eitil_wrapper/lib/eitil_wrapper/request_logger.rb
291
- - eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb
292
- - eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb
293
- - eitil_wrapper/lib/eitil_wrapper/routes.rb
294
- - eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
295
274
  - lib/eitil.rb
296
275
  - lib/eitil/all.rb
297
276
  - lib/eitil/railtie.rb
@@ -309,9 +288,6 @@ files:
309
288
  - spec/dummy_app/app/controllers/addresses_controller.rb
310
289
  - spec/dummy_app/app/controllers/application_controller.rb
311
290
  - spec/dummy_app/app/controllers/users_controller.rb
312
- - spec/dummy_app/app/decorators/address_decorator.rb
313
- - spec/dummy_app/app/decorators/application_decorator.rb
314
- - spec/dummy_app/app/decorators/user_decorator.rb
315
291
  - spec/dummy_app/app/helpers/addresses_helper.rb
316
292
  - spec/dummy_app/app/helpers/application_helper.rb
317
293
  - spec/dummy_app/app/helpers/users_helper.rb
@@ -444,7 +420,6 @@ files:
444
420
  - spec/eitil_integrate/application_exporter/auto_sum_spec.rb
445
421
  - spec/eitil_integrate/application_exporter/initialize_spec.rb
446
422
  - spec/eitil_wrapper/callbacks/helper_methods_spec.rb
447
- - spec/eitil_wrapper/decorators/decorators_spec.rb
448
423
  - spec/eitil_wrapper/jobs/single_method_job_spec.rb
449
424
  - spec/eitil_wrapper/routes/extended_resources_spec.rb
450
425
  - spec/eitil_wrapper/scopes/default_scopes_spec.rb
@@ -1,309 +0,0 @@
1
-
2
-
3
-
4
- # EitilWrapper
5
-
6
- EitilWrapper wraps core rails operations with extended utilities – such as routing, jobs and decoraters.
7
-
8
-
9
-
10
-
11
-
12
-
13
- ## EitilWrapper::Callbacks
14
-
15
- ```ruby
16
-
17
- require "eitil_wrapper/callbacks"
18
-
19
- ```
20
-
21
- Callback helper methods are created for use within a model's callbacks. You can use them as callback conditionals, e.g. "after_save :do_this, if :doing_became_true". Which scopes are generated depends on the datatype of a column. The methods currently generated are:
22
-
23
- ```ruby
24
- # require "eitil_wrapper/callbacks/helper_methods"
25
-
26
- # columns of datatype: boolean
27
- .{column_name}_became_true
28
- .{column_name}_becomes_true
29
- .{column_name}_to_true # works for both become and became
30
-
31
- .{column_name}_became_false
32
- .{column_name}_becomes_false
33
- .{column_name}_to_false # works for both become and became
34
- ```
35
-
36
-
37
-
38
-
39
-
40
- ## EitilWrapper::Decorators
41
-
42
- ```ruby
43
-
44
- require "eitil_wrapper/decorators"
45
-
46
- ```
47
-
48
- The Eitil decorator wrappers help you to standardize the calling of the right decorator method from within your controller action. Basically it provides you with a decorate macro in each controller.
49
-
50
- ```ruby
51
- decorate(dec_item, dec_method: nil, dec_class: nil, **dec_kwargs)
52
- ```
53
-
54
- - dec_item is the instance that will be decorated
55
- - dec_method enabled you to set the desired decorator method. If not provided, it will look into the request params: if params["isMobile"] is present it will call .app, if params["isWeb"] is present it will call :app. If neither is provided in the params, it will call the default method :base.
56
- - dec_class enables you to overwrite the decorator class that will be called. If not provided, the decorator class will be inferred from the instance model's classname (User => UserDecorator).
57
- - dec_kwargs enables you to provide additional arguments, which will be passed to your decorator method.
58
-
59
-
60
- ### Configuration
61
-
62
- 1. Your decorator classes should inherit from EitilWrapper::ApplicationDecorator.
63
- 2. Your controllers should inherit the module EitilWrapper::ControllerDecorator, through inclusion in a superclass.
64
- 3. If you set controller ivars for each request, you can make them available in your decorators by providing Eitil with the names of your ivars as an array of symbols:
65
-
66
- ```ruby
67
- # initializers/eitil.rb
68
-
69
- Eitil.set_config do |config|
70
- config.controller_ivars = [:user, :env]
71
- end
72
- ```
73
-
74
-
75
-
76
-
77
-
78
- ## EitilWrapper::Jobs
79
-
80
- ```ruby
81
-
82
- require "eitil_wrapper/jobs"
83
-
84
- ```
85
-
86
- The Eitil jobs wrapper enables you to create perform_now and perform_later jobs on the fly, without the need to create a new class and file.
87
-
88
- The macro new_job accepts a :method as argument and defines a new method :method_job. The newly defined :method_job, when called, performs the orginal :method in the background. The new_job macro accepts both instance methods and singleton methods, which are defined within there own method scope.
89
-
90
- In contrast, the new_job_now macro defines a new :method_job_now method, which performs in the foreground.
91
-
92
- ```ruby
93
- # require "eitil_wrapper/jobs/new_job"
94
-
95
- new_job(_method, *args, **kwargs)
96
- # assuming a method :hello_world, call as: new_job :hello_world
97
- # => defines :hello_world_job
98
- ```
99
-
100
- ```ruby
101
- # require "eitil_wrapper/jobs/new_job_now"
102
-
103
- new_job_now(_method, *args, **kwargs)
104
- # assuming a method :hello_world, call as: new_job_now :hello_world
105
- # => defines :hello_world_job_now
106
- ```
107
-
108
-
109
-
110
-
111
-
112
- ## EitilWrapper::Routes
113
-
114
- ```ruby
115
-
116
- require "eitil_wrapper/routes"
117
-
118
- ```
119
-
120
- The Eitil router wrapper enables you to easily create new routes that can be shared among controllers. In that sense, it is as a custom extension of the built-in resourceful routes.
121
-
122
- ### New route
123
-
124
- The first macro, .new_route, enables you to create new route objects which may be called and used by different controllers.
125
-
126
- ```ruby
127
- # require "eitil_wrapper/routes/extended_resources"
128
-
129
- new_route(verb, _method, action, scope)
130
- # call as: new_route :post, :attachment, "add_attachment", :member
131
- ```
132
-
133
- - verb refers to the http_verb, e.g. :put.
134
- - method refers to the given http method (e.g. 'users/:id'). Additionally, this is the name you will refer to in order to include the route into a controller. Therefore the argument should be unique among all other routes.
135
- - action refers to the controller action to which you want to redirect to request, e.g. :update_user.
136
- - scope refers to the url and can be set to either :member or :collection.
137
-
138
- ### Add route
139
-
140
- The second macro, extended_resources, enables you to create all standard resources for a controller and add your own standardized routes. This macro works the same as the built-in :resources, except that you can pass more arguments to only: [], which adds the routes to your controller.
141
-
142
- ```ruby
143
- # require "eitil_wrapper/routes/extended_resources"
144
-
145
- extended_resources(controller, **kwargs)
146
- # call as: extended_resources :posts, only: [:create, :update, :attachment]
147
- ```
148
-
149
-
150
-
151
-
152
-
153
- ## EitilWrapper::Records
154
-
155
- ```ruby
156
-
157
- # include all below EitilWrapper::Records helpers through:
158
- require "eitil_wrapper/records"
159
-
160
- ```
161
-
162
- ### Scopes
163
-
164
- ```ruby
165
-
166
- require "eitil_wrapper/records/scopes"
167
-
168
- ```
169
-
170
- Scopes are generated through the columns of your model's database table. Which scopes are generated depends on the datatype of a column. For example, if your User model with table users has a column is_manager, a scope :is_manager_true is generated for your User model. A scope method is defined only if it does not already responds to another method of the same name. The scopes generated are:
171
-
172
- ```ruby
173
- # require "eitil_wrapper/scopes/default_scopes"
174
-
175
- # columns of datatype: boolean
176
- .{column_name}_true
177
- .{column_name}_false
178
-
179
- # columns of datatype: datetime
180
- .{column_name}_today
181
- .{column_name}_past
182
- .{column_name}_future
183
- .{column_name}_on_date(date)
184
- .{column_name}_before_date(date)
185
- .{column_name}_after_date(date)
186
- .{column_name}_between_dates(start_date, end_date)
187
-
188
- # columns of datatype: date
189
- .{column_name}_today
190
- .{column_name}_past
191
- .{column_name}_future
192
- .{column_name}_on_date(date)
193
- .{column_name}_before_date(date)
194
- .{column_name}_after_date(date)
195
- .{column_name}_between_dates(start_date, end_date)
196
-
197
- # columns of datatype: integer
198
- .{column_name}_equal_to(number)
199
- .{column_name}_lower_than(number)
200
- .{column_name}_higher_than(number)
201
- .{column_name}_between(min, max)
202
-
203
- # columns of datatype: float
204
- .{column_name}_equal_to(number)
205
- .{column_name}_lower_than(number)
206
- .{column_name}_higher_than(number)
207
- .{column_name}_between(min, max)
208
- ```
209
-
210
- ### Sorts
211
-
212
-
213
- ```ruby
214
-
215
- require "eitil_wrapper/records/sorts"
216
-
217
- ```
218
-
219
- Sorts are generated through the columns of your model's database table. Which sorts are generated depends on the datatype of a column. A sort method is defined only if it does not already responds to another method of the same name. The sorts generated are:
220
-
221
- ```ruby
222
- # require "eitil_wrapper/scopes/default_scopes"
223
-
224
- # columns of datatype: datetime
225
- .{column_name}_oldest_first
226
- .{column_name}_newest_first
227
-
228
- # columns of datatype: date
229
- .{column_name}_oldest_first
230
- .{column_name}_newest_first
231
-
232
- # columns of datatype: integer
233
- .{column_name}_ascending
234
- .{column_name}_descending
235
-
236
- # columns of datatype: float
237
- .{column_name}_ascending
238
- .{column_name}_descending
239
- ```
240
-
241
-
242
- ### Calculators
243
-
244
-
245
- ```ruby
246
-
247
- require "eitil_wrapper/records/calculators"
248
-
249
- ```
250
-
251
- Calculators are generated through the columns of your model's database table. Which calculators are generated depends on the datatype of a column. A calculator method is defined only if it does not already responds to another method of the same name. The calculators generated are:
252
-
253
- ```ruby
254
- # require "eitil_wrapper/scopes/default_scopes"
255
-
256
- # columns of datatype: array (serialized)
257
- .{column_name}_sum # returns all uniq elements in a new, single array
258
- .{column_name}_sum_i # sum and map to integer
259
- .{column_name}_sum_f # sum and map to float
260
- .{column_name}_sum_d # sum and map to decimal
261
-
262
- # columns of datatype: integer
263
- .{column_name}_max
264
- .{column_name}_min
265
- .{column_name}_sum
266
- .{column_name}_avg
267
-
268
- # columns of datatype: float
269
- .{column_name}_max
270
- .{column_name}_min
271
- .{column_name}_sum
272
- .{column_name}_avg
273
-
274
- # columns of datatype: decimal
275
- .{column_name}_max
276
- .{column_name}_min
277
- .{column_name}_sum
278
- .{column_name}_avg
279
-
280
- # columns of datatype: bigint
281
- .{column_name}_max
282
- .{column_name}_min
283
- .{column_name}_sum
284
- .{column_name}_avg
285
- ```
286
-
287
-
288
-
289
- ## EitilWrapper::RequestLogger
290
-
291
- ```ruby
292
-
293
- require "eitil_wrapper/request_logger"
294
-
295
- ```
296
-
297
- The RequestLogger wrapper logs request params in /log/request_logger.log, which offers the opportunity to pry into webhooks while developing. In order to track a controller, simply add the following. This calls a background job which writes to the file.
298
-
299
- ```ruby
300
-
301
- include EitilWrapper::RequestLogger::ControllerMixin
302
- before_action :log_request
303
-
304
- ```
305
-
306
-
307
-
308
-
309
-
@@ -1,118 +0,0 @@
1
-
2
- # require "eitil_wrapper/callbacks/helper_methods"
3
-
4
- # require "eitil_wrapper/railtie" to run the dynamic dispatch as an init hook during boot
5
- require "eitil_wrapper/railtie"
6
-
7
- require "eitil_core/argument_helpers/all_args_to_ivars"
8
-
9
- module EitilWrapper
10
- module Callbacks
11
- module HelperMethods
12
-
13
- Eitil::ApplicationRecordModules << self
14
-
15
- def inherited(subclass)
16
- super
17
- return if Eitil.skip_callback_helper_methods_for_models.include?(subclass.to_s.to_sym)
18
-
19
- # Set the proper table_names for namespaced models. Without setting this,
20
- # Rails run into problems due to the fact that the first call to the model's
21
- # constant triggers this initializer first, and only thereafter the model file
22
- # which sets the correct table_name through a macro.
23
- namespaced_class = subclass.to_s.include?('::')
24
- subclass.table_name = subclass.to_s.gsub('::', '_').downcase.pluralize if namespaced_class
25
-
26
- subclass.use_eitil_callback_helper_methods
27
-
28
- rescue => e
29
- puts "callback helper methods failed for #{subclass} because of #{e.class} and '#{e.to_s.split(' ').first}'"
30
- end
31
-
32
- def use_eitil_callback_helper_methods
33
- return if abstract_class?
34
- create_eitil_boolean_callback_helper_methods
35
- end
36
-
37
- def columns_of_type(data_type)
38
- columns_hash.select { |column,v| v.sql_type_metadata.type == data_type }
39
- end
40
-
41
- def create_eitil_boolean_callback_helper_methods
42
- columns = columns_of_type :boolean
43
- columns&.each do |column_name, eitil_object|
44
-
45
- # truthy methods
46
- create_eitil_became_true_callback_helper column_name
47
- create_eitil_becomes_true_callback_helper column_name
48
- create_eitil_to_true_callback_helper column_name
49
-
50
- # falsy methods
51
- create_eitil_became_false_callback_helper column_name
52
- create_eitil_becomes_false_callback_helper column_name
53
- create_eitil_to_false_callback_helper column_name
54
-
55
- end
56
- end
57
-
58
- def create_eitil_became_true_callback_helper(column_name)
59
- method_name = "#{column_name}_became_true"
60
-
61
- define_method(method_name) do
62
- _changes = previous_changes[column_name]
63
- _changes && !_changes[0] && _changes[1]
64
- end
65
- end
66
-
67
- def create_eitil_becomes_true_callback_helper(column_name)
68
- method_name = "#{column_name}_becomes_true"
69
-
70
- define_method(method_name) do
71
- _changes = changes[column_name]
72
- _changes && !_changes[0] && _changes[1]
73
- end
74
- end
75
-
76
- def create_eitil_to_true_callback_helper(column_name)
77
- method_name = "#{column_name}_to_true"
78
- becomes_method = "#{column_name}_becomes_true"
79
- became_method = "#{column_name}_became_true"
80
-
81
- define_method(method_name) do
82
- return send(becomes_method) if changes&.present?
83
- return send(became_method) if previous_changes&.present?
84
- end
85
- end
86
-
87
- def create_eitil_became_false_callback_helper(column_name)
88
- method_name = "#{column_name}_became_false"
89
-
90
- define_method(method_name) do
91
- _changes = previous_changes[column_name]
92
- _changes && _changes[0] && !_changes[1]
93
- end
94
- end
95
-
96
- def create_eitil_becomes_false_callback_helper(column_name)
97
- method_name = "#{column_name}_becomes_false"
98
-
99
- define_method(method_name) do
100
- _changes = changes[column_name]
101
- _changes && _changes[0] && !_changes[1]
102
- end
103
- end
104
-
105
- def create_eitil_to_false_callback_helper(column_name)
106
- method_name = "#{column_name}_to_false"
107
- becomes_method = "#{column_name}_becomes_false"
108
- became_method = "#{column_name}_became_false"
109
-
110
- define_method(method_name) do
111
- return send(becomes_method) if changes&.present?
112
- return send(became_method) if previous_changes&.present?
113
- end
114
- end
115
-
116
- end
117
- end
118
- end
@@ -1,2 +0,0 @@
1
-
2
- require "eitil_wrapper/callbacks/helper_methods"
@@ -1,22 +0,0 @@
1
-
2
- require "active_model/railtie"
3
-
4
- module EitilWrapper
5
- class ApplicationDecorator
6
-
7
- include ActiveModel::Model
8
-
9
- def initialize(attributes={}, **kwargs)
10
- super attributes
11
- all_kwargs_to_ivars binding
12
- end
13
-
14
- def self.method_missing(method_name, *args, **kwargs)
15
- if %i$ web app $.include?(method_name.to_sym)
16
- kwargs.any? ? send(:base, *args, **kwargs) : send(:base, *args)
17
- end
18
- super
19
- end
20
-
21
- end
22
- end