eitil 2.0.1 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/eitil_integrate/lib/eitil_integrate/application_exporter.rb +0 -1
  4. data/lib/eitil/railtie.rb +2 -3
  5. data/lib/eitil/version.rb +1 -1
  6. data/spec/dummy_app/app/models/user.rb +0 -25
  7. data/spec/spec_helper.rb +0 -2
  8. metadata +2 -25
  9. data/eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb +0 -50
  10. data/eitil_wrapper/README.md +0 -271
  11. data/eitil_wrapper/lib/eitil_wrapper/callbacks/helper_methods.rb +0 -118
  12. data/eitil_wrapper/lib/eitil_wrapper/callbacks.rb +0 -2
  13. data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb +0 -34
  14. data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job_now.rb +0 -37
  15. data/eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb +0 -11
  16. data/eitil_wrapper/lib/eitil_wrapper/jobs.rb +0 -4
  17. data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +0 -94
  18. data/eitil_wrapper/lib/eitil_wrapper/records/default_calculators.rb +0 -104
  19. data/eitil_wrapper/lib/eitil_wrapper/records/default_scopes.rb +0 -95
  20. data/eitil_wrapper/lib/eitil_wrapper/records/default_sorts.rb +0 -81
  21. data/eitil_wrapper/lib/eitil_wrapper/records.rb +0 -4
  22. data/eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb +0 -48
  23. data/eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb +0 -17
  24. data/eitil_wrapper/lib/eitil_wrapper/request_logger.rb +0 -5
  25. data/eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb +0 -40
  26. data/eitil_wrapper/lib/eitil_wrapper/routes.rb +0 -2
  27. data/eitil_wrapper/lib/eitil_wrapper.rb +0 -8
  28. data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +0 -34
  29. data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +0 -72
  30. data/spec/eitil_wrapper/routes/extended_resources_spec.rb +0 -16
  31. data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +0 -154
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 340d9c03c3202df1622b826be81e2855b873a03dde4855e3b17597d9d4ca0916
4
- data.tar.gz: c1aff01a4c23ffe4b9b1fce2e1e6a2e146e932ad21c89da7e619fcbde7774ef5
3
+ metadata.gz: 2edc24dc4673e9c8eabc8340bbdb05bcf714b0a657b963df0a31a585e9577a9d
4
+ data.tar.gz: ac24d95b97cf8c7ad21719264a5d8519d11e8d3eddee862c97a9dbc264b96768
5
5
  SHA512:
6
- metadata.gz: 5481779145b3b57fbc781ecb02cd3e6348bdd1b3318376a2328d2def32a67406dab91cdfceb19c6788f1c9e1096d47cba8294dfd2886e60e36fac2273065cf8b
7
- data.tar.gz: 18d72653d077ba48e93e01e5e62e5678d8b64bc751297d8b329678a3d644b710d33f6d9ac7a9bbe8eeceab4633ab13e728753148d6ed2c8b86bef3fe29345122
6
+ metadata.gz: db7b2af3252a1e6443b8a22e6555ff61ebb4df435963e8b42b872a2fa219f1a3286fa6abaf3c5905d61918c98df48a04b355d84b6c84604640549ed690599971
7
+ data.tar.gz: 23c9459574092284fcf095cd8bb4a1ca41f97a1e5013caad874058ee9dece9f03411fe281a37ccec4bd2d619b40aff70db0285ac1177421aa4cc974a70b39efb
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
 
@@ -15,7 +15,6 @@ require_relative "application_exporter/style_cells"
15
15
  require_relative "application_exporter/store_file"
16
16
  require_relative "application_exporter/setters"
17
17
  require_relative "application_exporter/selectors"
18
- require_relative "application_exporter/lookups"
19
18
  require_relative "application_exporter/infos"
20
19
  require_relative "application_exporter/log_state"
21
20
 
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 = '2.0.1'
3
+ VERSION = '2.0.5'
4
4
 
5
5
  end
@@ -2,29 +2,4 @@ class User < ApplicationRecord
2
2
 
3
3
  has_one :address
4
4
 
5
- # ---
6
- # below are methods, used for testing EitilWrapper::Jobs
7
-
8
- def self.this_is_a_singleton_method(positional_value = nil, keyword_value: nil)
9
- "this is a singleton method"
10
- return positional_value if positional_value
11
- return keyword_value if keyword_value
12
- return nil
13
- end
14
-
15
- new_job :this_is_a_singleton_method
16
- new_job_now :this_is_a_singleton_method
17
-
18
- def this_is_an_instance_method(positional_value = nil, keyword_value: nil)
19
- "this is an instance method"
20
- return positional_value if positional_value
21
- return keyword_value if keyword_value
22
- return nil
23
- end
24
-
25
- new_job :this_is_an_instance_method
26
- new_job_now :this_is_an_instance_method
27
-
28
- # ---
29
-
30
5
  end
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: 2.0.1
4
+ version: 2.0.5
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-15 00:00:00.000000000 Z
11
+ date: 2021-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -246,7 +246,6 @@ files:
246
246
  - eitil_integrate/lib/eitil_integrate/application_exporter/infos.rb
247
247
  - eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb
248
248
  - eitil_integrate/lib/eitil_integrate/application_exporter/log_state.rb
249
- - eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb
250
249
  - eitil_integrate/lib/eitil_integrate/application_exporter/selectors.rb
251
250
  - eitil_integrate/lib/eitil_integrate/application_exporter/setters.rb
252
251
  - eitil_integrate/lib/eitil_integrate/application_exporter/store_file.rb
@@ -271,24 +270,6 @@ files:
271
270
  - eitil_support/lib/eitil_support/stacktrace/audit.rb
272
271
  - eitil_support/lib/eitil_support/stacktrace/call.rb
273
272
  - 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/jobs.rb
279
- - eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb
280
- - eitil_wrapper/lib/eitil_wrapper/jobs/new_job_now.rb
281
- - eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb
282
- - eitil_wrapper/lib/eitil_wrapper/railtie.rb
283
- - eitil_wrapper/lib/eitil_wrapper/records.rb
284
- - eitil_wrapper/lib/eitil_wrapper/records/default_calculators.rb
285
- - eitil_wrapper/lib/eitil_wrapper/records/default_scopes.rb
286
- - eitil_wrapper/lib/eitil_wrapper/records/default_sorts.rb
287
- - eitil_wrapper/lib/eitil_wrapper/request_logger.rb
288
- - eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb
289
- - eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb
290
- - eitil_wrapper/lib/eitil_wrapper/routes.rb
291
- - eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
292
273
  - lib/eitil.rb
293
274
  - lib/eitil/all.rb
294
275
  - lib/eitil/railtie.rb
@@ -437,10 +418,6 @@ files:
437
418
  - spec/eitil_core/type_checkers/is_num_or_nan_spec.rb
438
419
  - spec/eitil_integrate/application_exporter/auto_sum_spec.rb
439
420
  - spec/eitil_integrate/application_exporter/initialize_spec.rb
440
- - spec/eitil_wrapper/callbacks/helper_methods_spec.rb
441
- - spec/eitil_wrapper/jobs/single_method_job_spec.rb
442
- - spec/eitil_wrapper/routes/extended_resources_spec.rb
443
- - spec/eitil_wrapper/scopes/default_scopes_spec.rb
444
421
  - spec/spec_helper.rb
445
422
  homepage: https://github.com/eitje-app/eitil_engine
446
423
  licenses:
@@ -1,50 +0,0 @@
1
-
2
- # require "eitil_integrate/application_exporter/lookups"
3
-
4
- require "eitil_integrate/application_exporter/initialize"
5
- require "eitil_support/directory"
6
-
7
- module EitilIntegrate::RubyXL
8
- class ApplicationExporter
9
-
10
- class << self
11
-
12
- def exporter_paths
13
- EitilSupport::Directory.files('app/views/exporters/exporters').select { |path| path.end_with? '_exporter.rb' }
14
- end
15
-
16
- def exporter_names
17
- exporter_paths.map { |path| path.split('/').last.remove('.rb').camelcase }
18
- end
19
-
20
- def exporter_constants
21
- exporter_names.map &:constantize
22
- end
23
-
24
- def exporter_infos
25
- exporter_constants.map { |_c| { "#{_c.to_s.remove("Exporter")}": _c.info || {} } }.inject &:merge
26
- end
27
-
28
- def exporter_info(exporter, info)
29
- exporter_infos[exporter]&.dig(info)
30
- end
31
-
32
- # returns the exporter_infos, without the datatypes – for taxonomy purpuses, the field
33
- # names are often sufficient
34
- def exporter_taxonomy
35
- parameter_fields = exporter_infos.transform_values { |v| v.select { |k,v| k == :required || k == :optional } }
36
-
37
- parameter_fields.transform_values do |setting_collection|
38
- setting_collection.transform_values do |setting|
39
- setting.map { |key| key.is_a?(Hash) ? key.keys : key }.flatten
40
- end
41
- end
42
- end
43
-
44
- def exporter_params
45
- exporter_infos.transform_values { |v| [v[:required], v[:optional]].flatten.compact }
46
- end
47
-
48
- end
49
- end
50
- end
@@ -1,271 +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::Jobs
41
-
42
- ```ruby
43
-
44
- require "eitil_wrapper/jobs"
45
-
46
- ```
47
-
48
- 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.
49
-
50
- 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.
51
-
52
- In contrast, the new_job_now macro defines a new :method_job_now method, which performs in the foreground.
53
-
54
- ```ruby
55
- # require "eitil_wrapper/jobs/new_job"
56
-
57
- new_job(_method, *args, **kwargs)
58
- # assuming a method :hello_world, call as: new_job :hello_world
59
- # => defines :hello_world_job
60
- ```
61
-
62
- ```ruby
63
- # require "eitil_wrapper/jobs/new_job_now"
64
-
65
- new_job_now(_method, *args, **kwargs)
66
- # assuming a method :hello_world, call as: new_job_now :hello_world
67
- # => defines :hello_world_job_now
68
- ```
69
-
70
-
71
-
72
-
73
-
74
- ## EitilWrapper::Routes
75
-
76
- ```ruby
77
-
78
- require "eitil_wrapper/routes"
79
-
80
- ```
81
-
82
- 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.
83
-
84
- ### New route
85
-
86
- The first macro, .new_route, enables you to create new route objects which may be called and used by different controllers.
87
-
88
- ```ruby
89
- # require "eitil_wrapper/routes/extended_resources"
90
-
91
- new_route(verb, _method, action, scope)
92
- # call as: new_route :post, :attachment, "add_attachment", :member
93
- ```
94
-
95
- - verb refers to the http_verb, e.g. :put.
96
- - 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.
97
- - action refers to the controller action to which you want to redirect to request, e.g. :update_user.
98
- - scope refers to the url and can be set to either :member or :collection.
99
-
100
- ### Add route
101
-
102
- 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.
103
-
104
- ```ruby
105
- # require "eitil_wrapper/routes/extended_resources"
106
-
107
- extended_resources(controller, **kwargs)
108
- # call as: extended_resources :posts, only: [:create, :update, :attachment]
109
- ```
110
-
111
-
112
-
113
-
114
-
115
- ## EitilWrapper::Records
116
-
117
- ```ruby
118
-
119
- # include all below EitilWrapper::Records helpers through:
120
- require "eitil_wrapper/records"
121
-
122
- ```
123
-
124
- ### Scopes
125
-
126
- ```ruby
127
-
128
- require "eitil_wrapper/records/scopes"
129
-
130
- ```
131
-
132
- 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:
133
-
134
- ```ruby
135
- # require "eitil_wrapper/scopes/default_scopes"
136
-
137
- # columns of datatype: boolean
138
- .{column_name}_true
139
- .{column_name}_false
140
-
141
- # columns of datatype: datetime
142
- .{column_name}_today
143
- .{column_name}_past
144
- .{column_name}_future
145
- .{column_name}_on_date(date)
146
- .{column_name}_before_date(date)
147
- .{column_name}_after_date(date)
148
- .{column_name}_between_dates(start_date, end_date)
149
-
150
- # columns of datatype: date
151
- .{column_name}_today
152
- .{column_name}_past
153
- .{column_name}_future
154
- .{column_name}_on_date(date)
155
- .{column_name}_before_date(date)
156
- .{column_name}_after_date(date)
157
- .{column_name}_between_dates(start_date, end_date)
158
-
159
- # columns of datatype: integer
160
- .{column_name}_equal_to(number)
161
- .{column_name}_lower_than(number)
162
- .{column_name}_higher_than(number)
163
- .{column_name}_between(min, max)
164
-
165
- # columns of datatype: float
166
- .{column_name}_equal_to(number)
167
- .{column_name}_lower_than(number)
168
- .{column_name}_higher_than(number)
169
- .{column_name}_between(min, max)
170
- ```
171
-
172
- ### Sorts
173
-
174
-
175
- ```ruby
176
-
177
- require "eitil_wrapper/records/sorts"
178
-
179
- ```
180
-
181
- 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:
182
-
183
- ```ruby
184
- # require "eitil_wrapper/scopes/default_scopes"
185
-
186
- # columns of datatype: datetime
187
- .{column_name}_oldest_first
188
- .{column_name}_newest_first
189
-
190
- # columns of datatype: date
191
- .{column_name}_oldest_first
192
- .{column_name}_newest_first
193
-
194
- # columns of datatype: integer
195
- .{column_name}_ascending
196
- .{column_name}_descending
197
-
198
- # columns of datatype: float
199
- .{column_name}_ascending
200
- .{column_name}_descending
201
- ```
202
-
203
-
204
- ### Calculators
205
-
206
-
207
- ```ruby
208
-
209
- require "eitil_wrapper/records/calculators"
210
-
211
- ```
212
-
213
- 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:
214
-
215
- ```ruby
216
- # require "eitil_wrapper/scopes/default_scopes"
217
-
218
- # columns of datatype: array (serialized)
219
- .{column_name}_sum # returns all uniq elements in a new, single array
220
- .{column_name}_sum_i # sum and map to integer
221
- .{column_name}_sum_f # sum and map to float
222
- .{column_name}_sum_d # sum and map to decimal
223
-
224
- # columns of datatype: integer
225
- .{column_name}_max
226
- .{column_name}_min
227
- .{column_name}_sum
228
- .{column_name}_avg
229
-
230
- # columns of datatype: float
231
- .{column_name}_max
232
- .{column_name}_min
233
- .{column_name}_sum
234
- .{column_name}_avg
235
-
236
- # columns of datatype: decimal
237
- .{column_name}_max
238
- .{column_name}_min
239
- .{column_name}_sum
240
- .{column_name}_avg
241
-
242
- # columns of datatype: bigint
243
- .{column_name}_max
244
- .{column_name}_min
245
- .{column_name}_sum
246
- .{column_name}_avg
247
- ```
248
-
249
-
250
-
251
- ## EitilWrapper::RequestLogger
252
-
253
- ```ruby
254
-
255
- require "eitil_wrapper/request_logger"
256
-
257
- ```
258
-
259
- 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.
260
-
261
- ```ruby
262
-
263
- include EitilWrapper::RequestLogger::ControllerMixin
264
- before_action :log_request
265
-
266
- ```
267
-
268
-
269
-
270
-
271
-
@@ -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,34 +0,0 @@
1
-
2
- # require "eitil_wrapper/jobs/new_job"
3
-
4
- require "eitil_wrapper/jobs/single_method_job"
5
-
6
- Kernel.module_eval do
7
-
8
- # BEWARE: _self is currently not accepted in perform_later jobs due to serialization errors
9
-
10
- # The cases of 'id' and '_self' both handle instances, with the difference
11
- # being that 'id' works for objects that have a database record, while '_self'
12
- # works for non database supported instanes, such as an Exporter instance.
13
-
14
- def new_job(_method, *args, **kwargs)
15
-
16
- if instance_methods(false).include? _method
17
- define_method "#{_method}_job" do |_self = nil, *args, **kwargs|
18
-
19
- EitilWrapper::SingleMethodJob.perform_later(
20
- *args, _class: self.class.to_s, _method: _method.to_s, id: safe_send(:id), _self: self.to_json, **kwargs
21
- )
22
- end
23
-
24
- elsif singleton_methods(false).include? _method
25
- define_singleton_method "#{_method}_job" do |*args, **kwargs|
26
-
27
- EitilWrapper::SingleMethodJob.perform_later(
28
- *args, _class: to_s, _method: _method.to_s, **kwargs
29
- )
30
- end
31
- end
32
- end
33
-
34
- end
@@ -1,37 +0,0 @@
1
-
2
- # require "eitil_wrapper/jobs/new_job_now"
3
-
4
- require "eitil_wrapper/jobs/single_method_job"
5
-
6
- # BEWARE: This is an exact copy of the .new_job method, except for .perform_now instead of .perform_later and the method's name.
7
- # The reason for not using helper methods is to not unnecessarily fill and potentially fuck up the Kernel environment.
8
-
9
- Kernel.module_eval do
10
-
11
- # BEWARE: _self is currently not accepted in perform_later jobs due to serialization errors
12
-
13
- # The cases of 'id' and '_self' both handle instances, with the difference
14
- # being that 'id' works for objects that have a database record, while '_self'
15
- # works for non database supported instanes, such as an Exporter instance.
16
-
17
- def new_job_now(_method, *args, **kwargs)
18
-
19
- if instance_methods(false).include? _method
20
- define_method "#{_method}_job_now" do |_self = nil, *args, **kwargs|
21
-
22
- EitilWrapper::SingleMethodJob.perform_now(
23
- *args, _class: self.class.to_s, _method: _method.to_s, id: safe_send(:id), _self: self.to_json, **kwargs
24
- )
25
- end
26
-
27
- elsif singleton_methods(false).include? _method
28
- define_singleton_method "#{_method}_job_now" do |*args, **kwargs|
29
-
30
- EitilWrapper::SingleMethodJob.perform_now(
31
- *args, _class: to_s, _method: _method.to_s, **kwargs
32
- )
33
- end
34
- end
35
- end
36
-
37
- end