eitil 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/eitil_core/README.md +288 -0
- data/eitil_core/lib/eitil_core.rb +24 -0
- data/eitil_core/lib/eitil_core/application_controller.rb +2 -0
- data/eitil_core/lib/eitil_core/application_controller/slice_params.rb +14 -0
- data/eitil_core/lib/eitil_core/application_record.rb +4 -0
- data/eitil_core/lib/eitil_core/application_record/all_associations.rb +16 -0
- data/eitil_core/lib/eitil_core/application_record/find_by_like.rb +15 -0
- data/eitil_core/lib/eitil_core/application_record/where_like.rb +15 -0
- data/eitil_core/lib/eitil_core/argument_helpers.rb +5 -0
- data/eitil_core/lib/eitil_core/argument_helpers/all_args_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/argument_helpers/all_kwargs_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/argument_helpers/args_to_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/concerns.rb +2 -0
- data/eitil_core/lib/eitil_core/concerns/include_concerns_of.rb +15 -0
- data/eitil_core/lib/eitil_core/datetime.rb +2 -0
- data/eitil_core/lib/eitil_core/datetime/prettify.rb +10 -0
- data/eitil_core/lib/eitil_core/errors.rb +2 -0
- data/eitil_core/lib/eitil_core/errors/raise_error.rb +11 -0
- data/eitil_core/lib/eitil_core/float.rb +2 -0
- data/eitil_core/lib/eitil_core/float/safe_to_i.rb +9 -0
- data/eitil_core/lib/eitil_core/hash.rb +2 -0
- data/eitil_core/lib/eitil_core/hash/auto_dig.rb +17 -0
- data/eitil_core/lib/eitil_core/lookups.rb +2 -0
- data/eitil_core/lib/eitil_core/lookups/all_methods.rb +32 -0
- data/eitil_core/lib/eitil_core/railtie.rb +37 -0
- data/eitil_core/lib/eitil_core/safe_executions.rb +3 -0
- data/eitil_core/lib/eitil_core/safe_executions/safe_call.rb +12 -0
- data/eitil_core/lib/eitil_core/safe_executions/safe_send.rb +12 -0
- data/eitil_core/lib/eitil_core/setters.rb +2 -0
- data/eitil_core/lib/eitil_core/setters/set_ivars.rb +12 -0
- data/eitil_core/lib/eitil_core/type_checkers.rb +2 -0
- data/eitil_core/lib/eitil_core/type_checkers/is_num_or_nan.rb +96 -0
- data/eitil_core/lib/eitil_core/validations.rb +2 -0
- data/eitil_core/lib/eitil_core/validations/run_validations.rb +10 -0
- data/eitil_integrate/README.md +8 -0
- data/eitil_integrate/lib/eitil_integrate.rb +0 -0
- data/eitil_integrate/lib/eitil_integrate/railtie.rb +10 -0
- data/eitil_store/README.md +16 -0
- data/eitil_store/lib/eitil_store.rb +4 -0
- data/eitil_store/lib/eitil_store/railtie.rb +10 -0
- data/eitil_store/lib/eitil_store/regex.rb +4 -0
- data/eitil_store/lib/eitil_store/regex/regex.rb +41 -0
- data/eitil_support/README.md +78 -0
- data/eitil_support/lib/eitil_support.rb +5 -0
- data/eitil_support/lib/eitil_support/directory.rb +2 -0
- data/eitil_support/lib/eitil_support/directory/lookups.rb +23 -0
- data/eitil_support/lib/eitil_support/railtie.rb +10 -0
- data/eitil_support/lib/eitil_support/stacktrace.rb +4 -0
- data/eitil_support/lib/eitil_support/stacktrace/audit.rb +15 -0
- data/eitil_support/lib/eitil_support/stacktrace/call.rb +17 -0
- data/eitil_support/lib/eitil_support/stacktrace/stack.rb +28 -0
- data/eitil_wrapper/README.md +181 -0
- data/eitil_wrapper/lib/eitil_wrapper.rb +7 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators.rb +3 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +19 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +60 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs.rb +4 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb +34 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/new_job_debugger.rb +37 -0
- data/eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb +8 -0
- data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +49 -0
- data/eitil_wrapper/lib/eitil_wrapper/routes.rb +2 -0
- data/eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb +40 -0
- data/eitil_wrapper/lib/eitil_wrapper/scopes.rb +2 -0
- data/eitil_wrapper/lib/eitil_wrapper/scopes/default_scopes.rb +80 -0
- data/lib/eitil/all.rb +4 -1
- data/lib/eitil/version.rb +1 -1
- metadata +66 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc43b6cd9707424c178a28ad387d5cd144da66c9b4c213b767681c7e4d2b2d2a
|
4
|
+
data.tar.gz: b0b29f5ee309257e820b53406e8e8285e7107ea89f9519d018c30b2e4ca7e411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 360ce038ad78851c9a3f20f798bbc6dacd3a30a2dd9be73f097b3b08f72f1d513c4b3154f79842ece02ae872147be6ec9a8594641e209471827579dbed802d86
|
7
|
+
data.tar.gz: c823a9649a75e6db7bc31b5d91d60a2497d34ebf171c104e5fb2dcdda9926b70543cdd7be4d5a38c63cfa366ae9e3f679017aee1897834797e330817034aabe9
|
@@ -0,0 +1,288 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
# EitilCore
|
5
|
+
|
6
|
+
EitilCore extends the core classes of Ruby and Rails.
|
7
|
+
|
8
|
+
|
9
|
+
## ApplicationController
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
|
13
|
+
require "eitil_core/application_controller"
|
14
|
+
|
15
|
+
```
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
# require "eitil_core/application_controller/slice_params"
|
19
|
+
|
20
|
+
slice_params(*args)
|
21
|
+
# slices request params, converts them to JSON and symbolizes the keys
|
22
|
+
# call as: slice_params :id, :user
|
23
|
+
# => { id: 1, user: 69 }
|
24
|
+
```
|
25
|
+
|
26
|
+
|
27
|
+
## ApplicationRecord
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
|
31
|
+
require "eitil_core/application_controller"
|
32
|
+
|
33
|
+
```
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
# require "eitil_core/application_record/find_by_like"
|
37
|
+
|
38
|
+
self.find_by_like(_hash)
|
39
|
+
# runs .find_by with your string field made into a wildcard and case insensitive
|
40
|
+
# call as: User.find_by_like(name: 'jurriaan')
|
41
|
+
```
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
# require "eitil_core/application_record/where_like"
|
45
|
+
|
46
|
+
self.where_like(_hash)
|
47
|
+
# runs .where with your string field made into a wildcard and case insensitive
|
48
|
+
# call as: User.where_like(name: 'jurriaan')
|
49
|
+
```
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
# require "eitil_core/application_record/all_associations"
|
53
|
+
|
54
|
+
self.all_associations
|
55
|
+
# returns all associations for a given model
|
56
|
+
# call as: Environment.all_associations
|
57
|
+
```
|
58
|
+
|
59
|
+
|
60
|
+
## ArgumentHelpers
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
|
64
|
+
require "eitil_core/arugment_helpers"
|
65
|
+
|
66
|
+
```
|
67
|
+
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
# require "eitil_core/argument_helpers/all_args_to_ivars"
|
71
|
+
|
72
|
+
all_args_to_ivars(binding)
|
73
|
+
# sets all keywords arguments of the method's local binding to instance variables
|
74
|
+
# call as: all_args_to_ivars binding
|
75
|
+
```
|
76
|
+
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
# require "eitil_core/argument_helpers/args_to_ivars"
|
80
|
+
|
81
|
+
args_to_ivars(binding, *local_vars)
|
82
|
+
# sets specified keywords arguments of the method's local binding to instance variables
|
83
|
+
# call as: all_args_to_ivars binding :user_id, :user_name
|
84
|
+
```
|
85
|
+
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# require "eitil_core/argument_helpers/all_kwargs_to_ivars"
|
89
|
+
|
90
|
+
all_kwargs_to_ivars(local_binding, namespace= :kwargs)
|
91
|
+
# sets the method's **kwargs argument to instance variables, with each key as the ivar's "@#{name}" and the value as its value
|
92
|
+
# call as: kwargs_to_ivars binding
|
93
|
+
# the keywords container name can be overwritten, e.g. the common :attributes
|
94
|
+
```
|
95
|
+
|
96
|
+
|
97
|
+
## Concerns
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
|
101
|
+
require "eitil_core/concerns"
|
102
|
+
|
103
|
+
```
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
# require "eitil_core/concerns/include_concerns_of"
|
107
|
+
|
108
|
+
include_concerns_of(*directories, namespace: nil)
|
109
|
+
# includes models/concerns/{directories}/* if no namespace if given, or all concerns within the given namespace
|
110
|
+
# call as: include_concerns_of :user, :mail
|
111
|
+
# => includes all modules of models/concerns/user/* and models/oncerns/mail/*
|
112
|
+
# or call as: include_concerns_of :request_service, namespace: Eivid::Concerns
|
113
|
+
# tip: call Class.included_modules to view all included modules
|
114
|
+
```
|
115
|
+
|
116
|
+
|
117
|
+
## DateTime
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
|
121
|
+
require "eitil_core/datetime"
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
# require "eitil_core/datetime/prettify"
|
127
|
+
|
128
|
+
prettify
|
129
|
+
# formats DateTime instances into a pretty, simple and filename friendly format
|
130
|
+
# call as: DateTime.now.prettify
|
131
|
+
# => "2021-04-21.17:51:42"
|
132
|
+
```
|
133
|
+
|
134
|
+
|
135
|
+
## Errors
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
|
139
|
+
require "eitil_core/errors"
|
140
|
+
|
141
|
+
```
|
142
|
+
|
143
|
+
```ruby
|
144
|
+
# require "eitil_core/errors/raise_error"
|
145
|
+
|
146
|
+
raise_error(_class_name, message = nil)
|
147
|
+
# creates an error class if currently undefined, inheriting from StandardError, and raises the error with the given message
|
148
|
+
# call as: raise_error "SomethingWentWrongError", "check your code, bro!"
|
149
|
+
# => SomethingWentWrongError (check your code, bro!)
|
150
|
+
```
|
151
|
+
|
152
|
+
|
153
|
+
## Float
|
154
|
+
|
155
|
+
```ruby
|
156
|
+
|
157
|
+
require "eitil_core/float"
|
158
|
+
|
159
|
+
```
|
160
|
+
|
161
|
+
```ruby
|
162
|
+
# require "eitil_core/float/safe_to_i"
|
163
|
+
|
164
|
+
safe_to_i
|
165
|
+
# converts a float to an integer, only when no decimal values are lost.
|
166
|
+
# 8.00.safe_to_i returns 8 (Integer)
|
167
|
+
# 8.88.safe_to_i returns 8.88 (Float)
|
168
|
+
```
|
169
|
+
|
170
|
+
|
171
|
+
## Hash
|
172
|
+
|
173
|
+
```ruby
|
174
|
+
|
175
|
+
require "eitil_core/hash"
|
176
|
+
|
177
|
+
```
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
# require "eitil_core/hash/auto_dig"
|
181
|
+
|
182
|
+
auto_dig(_hash = self, _key)
|
183
|
+
# finds the value for the given hash key, irregardless of the amount of nested layers
|
184
|
+
# call as: {a: 1, b: {c: 2, d: {e: 3}}}.auto_dig :e
|
185
|
+
# => 3
|
186
|
+
```
|
187
|
+
|
188
|
+
|
189
|
+
## Lookups
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
|
193
|
+
require "eitil_core/lookups"
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
# require "eitil_core/lookups/all_methods"
|
199
|
+
|
200
|
+
all_methods(include_ancestors = true, grep: nil)
|
201
|
+
# pretty prints all methods for any object, grouped per type (e.g. private_methods, public_instance_methods)
|
202
|
+
# call as: Class.all_methods false, grep: /json/
|
203
|
+
```
|
204
|
+
|
205
|
+
|
206
|
+
## SafeExecutions
|
207
|
+
|
208
|
+
```ruby
|
209
|
+
|
210
|
+
require "eitil_core/safe_executions"
|
211
|
+
|
212
|
+
```
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
# require "eitil_core/safe_executions/safe_send"
|
216
|
+
|
217
|
+
safe_send(method, *args, return_value: nil)
|
218
|
+
# a safe version of .send, which in case of an error rescues and returns return_value (default: nil) instead
|
219
|
+
```
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
# require "eitil_core/safe_executions/safe_call"
|
223
|
+
|
224
|
+
safe_call(*args, return_value: nil, &block)
|
225
|
+
# a safe version of .call, which in case of an error rescues and returns return_value (default: nil) instead
|
226
|
+
# accepts either a proc argument or a block
|
227
|
+
```
|
228
|
+
|
229
|
+
|
230
|
+
## Setters
|
231
|
+
|
232
|
+
```ruby
|
233
|
+
|
234
|
+
require "eitil_core/setters"
|
235
|
+
|
236
|
+
```
|
237
|
+
|
238
|
+
```ruby
|
239
|
+
# require "eitil_core/setters/set_ivars"
|
240
|
+
|
241
|
+
set_ivars(*ivars)
|
242
|
+
# sets instance variables named @"#{ivar}" for each symbol passed, by invoking send("set_#{ivar}")
|
243
|
+
# e.g. set_ivars(:user) sets @user with the value returned by your local method .set_user
|
244
|
+
# call as: set_ivars :user, :authentication, :connection
|
245
|
+
```
|
246
|
+
|
247
|
+
|
248
|
+
## TypeCheckers
|
249
|
+
|
250
|
+
```ruby
|
251
|
+
|
252
|
+
require "eitil_core/type_checkers"
|
253
|
+
|
254
|
+
```
|
255
|
+
|
256
|
+
```ruby
|
257
|
+
# require "eitil_core/type_checkers/is_num_or_nan"
|
258
|
+
|
259
|
+
is_num?
|
260
|
+
# returns true if a string matches the Rubinius source code regex for strings and integers, false otherwise
|
261
|
+
# comes in handy since ruby plays it safe on string to number conversion ('aaa'.to_f returns 0.0, thus is valid)
|
262
|
+
# this method is also implemented for all other classes, such as Integer, Float, NilClass, TrueClass, Hash and so on...
|
263
|
+
|
264
|
+
is_nan?
|
265
|
+
# returns true if a string does NOT match the Rubinius source code regex for strings and integers, false otherwise
|
266
|
+
# comes in handy since ruby plays it safe on string to number conversion ('aaa'.to_f returns 0.0, thus is valid)
|
267
|
+
# this method is also implemented for all other classes, such as Integer, Float, NilClass, TrueClass, Hash and so on...
|
268
|
+
```
|
269
|
+
|
270
|
+
|
271
|
+
## Validations
|
272
|
+
|
273
|
+
```ruby
|
274
|
+
|
275
|
+
require "eitil_core/validations"
|
276
|
+
|
277
|
+
```
|
278
|
+
|
279
|
+
```ruby
|
280
|
+
# require "eitil_core/validations/run_validations"
|
281
|
+
|
282
|
+
run_validations(*validations)
|
283
|
+
# calls a method for each argument, namespaced as "validate_#{argument}"
|
284
|
+
# call as: run_validations(:single_receipt, :single_order)
|
285
|
+
# => calls #validate_single_receipt and #validate_single_order
|
286
|
+
```
|
287
|
+
|
288
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core"
|
3
|
+
|
4
|
+
# core class patches
|
5
|
+
require "eitil_core/hash"
|
6
|
+
require "eitil_core/float"
|
7
|
+
require "eitil_core/datetime"
|
8
|
+
|
9
|
+
# multi class patches
|
10
|
+
require "eitil_core/type_checkers"
|
11
|
+
|
12
|
+
# rails class patches
|
13
|
+
require "eitil_core/application_record"
|
14
|
+
require "eitil_core/application_controller"
|
15
|
+
|
16
|
+
# helper patches
|
17
|
+
require "eitil_core/errors"
|
18
|
+
require "eitil_core/argument_helpers"
|
19
|
+
require "eitil_core/safe_executions"
|
20
|
+
require "eitil_core/setters"
|
21
|
+
require "eitil_core/validations"
|
22
|
+
require "eitil_core/lookups"
|
23
|
+
require "eitil_core/concerns"
|
24
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/application_record/all_associations"
|
3
|
+
|
4
|
+
module EitilCore
|
5
|
+
module ApplicationRecord
|
6
|
+
module AllAssociations
|
7
|
+
|
8
|
+
def all_associations
|
9
|
+
reflect_on_all_associations.map do |assoc|
|
10
|
+
{ assoc.name => assoc.association_class.to_s.demodulize }
|
11
|
+
end.inject &:merge
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/application_record/find_by_like"
|
3
|
+
|
4
|
+
module EitilCore
|
5
|
+
module ApplicationRecord
|
6
|
+
module FindByLike
|
7
|
+
|
8
|
+
def find_by_like(_hash)
|
9
|
+
column, like = _hash.first
|
10
|
+
find_by("LOWER(#{column}) LIKE ?", "%#{like.downcase}%")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/application_record/where_like"
|
3
|
+
|
4
|
+
module EitilCore
|
5
|
+
module ApplicationRecord
|
6
|
+
module WhereLike
|
7
|
+
|
8
|
+
def where_like(_hash)
|
9
|
+
column, like = _hash.first
|
10
|
+
where("LOWER(#{column}) LIKE ?", "%#{like.downcase}%")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/argument_helpers/all_args_to_ivars"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
def all_args_to_ivars(local_binding)
|
7
|
+
local_binding.local_variables.each do |lvar|
|
8
|
+
instance_variable_set("@#{lvar}", local_binding.local_variable_get(lvar))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/argument_helpers/all_kwargs_to_ivars"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
def all_kwargs_to_ivars(local_binding, namespace=:kwargs)
|
7
|
+
local_binding.local_variable_get(namespace).each do |name, value|
|
8
|
+
instance_variable_set "@#{name}", value
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/argument_helpers/args_to_ivars"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
def args_to_ivars(local_binding, *local_vars)
|
7
|
+
local_vars.each do |lvar|
|
8
|
+
instance_variable_set("@#{lvar}", local_binding.local_variable_get(lvar))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|