eitil 1.1.6 → 1.1.7
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 +35 -0
- data/eitil_core/lib/eitil_core.rb +2 -1
- data/eitil_core/lib/eitil_core/array.rb +2 -0
- data/eitil_core/lib/eitil_core/array/slice_hashes.rb +18 -0
- data/eitil_core/lib/eitil_core/files.rb +2 -0
- data/eitil_core/lib/eitil_core/files/create_file.rb +28 -0
- data/eitil_core/lib/eitil_core/safe_executions.rb +2 -1
- data/eitil_core/lib/eitil_core/safe_executions/safe_rescue.rb +37 -0
- data/eitil_wrapper/README.md +5 -5
- data/eitil_wrapper/lib/eitil_wrapper/jobs.rb +1 -1
- data/eitil_wrapper/lib/eitil_wrapper/jobs/{new_job_debugger.rb → new_job_now.rb} +4 -4
- data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +14 -1
- data/lib/eitil/all.rb +1 -1
- data/lib/eitil/version.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 533d4d3d52d6d7559bdc922092cfad8ccad7cd525146d6dcf7375a6b2f2a7bf3
|
4
|
+
data.tar.gz: fbea7ab7c1ec676116f0b4c4465c8e1c6b89426bcd0b6ccc092e80432d1e7d2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ba784b5a5dd993b948e2eecd4cd992f28e43e2d253f90394b60740fc79d947d579b8910ae50c05c3f85367d058ad1d9b78ef6f3d246bc1e161542d836d2324e
|
7
|
+
data.tar.gz: db2c1be663f34dedfeb32a08f4c91dbd8f1830188c37977491100715c45c6a4ec259e983e42cb5e13f1563a82e602c302df02ae3ce2da23982a5500c07aed5bd
|
data/eitil_core/README.md
CHANGED
@@ -161,6 +161,23 @@ args_to_ivars!(*local_vars)
|
|
161
161
|
```
|
162
162
|
|
163
163
|
|
164
|
+
## Concerns
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
|
168
|
+
require "eitil_core/array"
|
169
|
+
|
170
|
+
```
|
171
|
+
|
172
|
+
```ruby
|
173
|
+
# require "eitil_core/array/slice_hashes"
|
174
|
+
|
175
|
+
slice_hashes(*keys)
|
176
|
+
# uses the given keys to slice each hash in the array of hashes
|
177
|
+
# call as: [{"a"=>1, "b"=>2, "c"=>3}, {"a"=>1, "b"=>2, "c"=>3}].slice_hashes("a", "b")
|
178
|
+
# => [{"a"=>1, "b"=>2}, {"a"=>1, "b"=>2}]
|
179
|
+
```
|
180
|
+
|
164
181
|
## Concerns
|
165
182
|
|
166
183
|
```ruby
|
@@ -217,6 +234,24 @@ raise_error(_class_name, message = nil)
|
|
217
234
|
```
|
218
235
|
|
219
236
|
|
237
|
+
## Files
|
238
|
+
|
239
|
+
```ruby
|
240
|
+
|
241
|
+
require "eitil_core/files"
|
242
|
+
|
243
|
+
```
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
# require "eitil_core/files/create_file"
|
247
|
+
|
248
|
+
create_file(file_name, data, directory: nil, suffix: nil, file_type: nil, append: false)
|
249
|
+
# writes data to a file (new or existing), with "#{Dir.home}/data" as default directory and with a timestamp as default suffix
|
250
|
+
# call as: create_file('test_file', {a: 1, b: {c: 2}}, append: true)
|
251
|
+
# => /Users/jurriaanschrofer/data/test_file__2021-06-30.17:30:49.json
|
252
|
+
```
|
253
|
+
|
254
|
+
|
220
255
|
## Float
|
221
256
|
|
222
257
|
```ruby
|
@@ -2,6 +2,7 @@
|
|
2
2
|
# require "eitil_core"
|
3
3
|
|
4
4
|
# core class patches
|
5
|
+
require "eitil_core/array"
|
5
6
|
require "eitil_core/hash"
|
6
7
|
require "eitil_core/float"
|
7
8
|
require "eitil_core/datetime"
|
@@ -24,4 +25,4 @@ require "eitil_core/setters"
|
|
24
25
|
require "eitil_core/validations"
|
25
26
|
require "eitil_core/lookups"
|
26
27
|
require "eitil_core/concerns"
|
27
|
-
|
28
|
+
require "eitil_core/files"
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/array/slice_hashes"
|
3
|
+
|
4
|
+
class Array
|
5
|
+
|
6
|
+
def slice_hashes(*keys)
|
7
|
+
|
8
|
+
return self if self.empty?
|
9
|
+
|
10
|
+
unless self.all? { |item| item.is_a? Hash }
|
11
|
+
raise ArgumentError, "Array#slice_hashes requires that all array items are Hash instances"
|
12
|
+
end
|
13
|
+
|
14
|
+
self.map { |item| item.slice(*keys) }
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/files/create_file"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
def create_file(file_name, data, directory: nil, suffix: nil, file_type: nil, append: false)
|
7
|
+
|
8
|
+
directory = directory || "#{Dir.home}/data"
|
9
|
+
suffix = suffix || DateTime.now.prettify
|
10
|
+
file_type = file_type || "json"
|
11
|
+
|
12
|
+
if file_type = "json"
|
13
|
+
data = JSON.pretty_generate(data)
|
14
|
+
end
|
15
|
+
|
16
|
+
path = "#{directory}/#{file_name}_#{suffix}.#{file_type}"
|
17
|
+
|
18
|
+
if append and Dir[path].present?
|
19
|
+
File.open(path, "a+") { |f| f << data }
|
20
|
+
return path
|
21
|
+
end
|
22
|
+
|
23
|
+
File.write(path, data)
|
24
|
+
return path
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/safe_executions/safe_rescue"
|
3
|
+
|
4
|
+
Kernel.module_eval do
|
5
|
+
|
6
|
+
# WORK IN PROCESS
|
7
|
+
# => accept a second block, prefarabbly not as proc, with code to be exceuted in case of rescue
|
8
|
+
# => or would it be possible to patch the 'rescue' keyword itself, so that we don't have to accept
|
9
|
+
# blocks as arguments?
|
10
|
+
|
11
|
+
def safe_rescue(error, &blk)
|
12
|
+
|
13
|
+
unless blk
|
14
|
+
raise ArgumentError, "a block should be passed"
|
15
|
+
end
|
16
|
+
|
17
|
+
unless error.is_a?(Class) or error.is_a?(String)
|
18
|
+
raise ArgumentError, "the given 'error' should either be a constant or string"
|
19
|
+
end
|
20
|
+
|
21
|
+
if error.is_a?(Class)
|
22
|
+
error_const = error
|
23
|
+
|
24
|
+
elsif error.is_a?(String) and Object.const_defined?(error)
|
25
|
+
error_const = error.constantize
|
26
|
+
|
27
|
+
elsif error.is_a?(String)
|
28
|
+
error_const = Object.const_set(error, Class.new(StandardError))
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
blk.call
|
33
|
+
|
34
|
+
rescue error_const
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/eitil_wrapper/README.md
CHANGED
@@ -59,7 +59,7 @@ The Eitil jobs wrapper enables you to create perform_now and perform_later jobs
|
|
59
59
|
|
60
60
|
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.
|
61
61
|
|
62
|
-
In contrast, the
|
62
|
+
In contrast, the new_job_now macro defines a new :method_job_now method, which performs in the foreground.
|
63
63
|
|
64
64
|
```ruby
|
65
65
|
# require "eitil_wrapper/jobs/new_job"
|
@@ -70,11 +70,11 @@ new_job(_method, *args, **kwargs)
|
|
70
70
|
```
|
71
71
|
|
72
72
|
```ruby
|
73
|
-
# require "eitil_wrapper/jobs/
|
73
|
+
# require "eitil_wrapper/jobs/new_job_now"
|
74
74
|
|
75
|
-
|
76
|
-
# assuming a method :hello_world, call as:
|
77
|
-
# => defines :
|
75
|
+
new_job_now(_method, *args, **kwargs)
|
76
|
+
# assuming a method :hello_world, call as: new_job_now :hello_world
|
77
|
+
# => defines :hello_world_job_now
|
78
78
|
```
|
79
79
|
|
80
80
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
# require "eitil_wrapper/jobs/
|
2
|
+
# require "eitil_wrapper/jobs/new_job_now"
|
3
3
|
|
4
4
|
require "eitil_wrapper/jobs/single_method_job"
|
5
5
|
|
@@ -14,10 +14,10 @@ Kernel.module_eval do
|
|
14
14
|
# being that 'id' works for objects that have a database record, while '_self'
|
15
15
|
# works for non database supported instanes, such as an Exporter instance.
|
16
16
|
|
17
|
-
def
|
17
|
+
def new_job_now(_method, *args, **kwargs)
|
18
18
|
|
19
19
|
if instance_methods(false).include? _method
|
20
|
-
define_method "#{_method}
|
20
|
+
define_method "#{_method}_job_now" do |_self = nil, *args, **kwargs|
|
21
21
|
|
22
22
|
EitilWrapper::SingleMethodJob.perform_now(
|
23
23
|
*args, _class: self.class.to_s, _method: _method.to_s, id: safe_send(:id), _self: self.to_json, **kwargs
|
@@ -25,7 +25,7 @@ Kernel.module_eval do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
elsif singleton_methods(false).include? _method
|
28
|
-
define_singleton_method "#{_method}
|
28
|
+
define_singleton_method "#{_method}_job_now" do |*args, **kwargs|
|
29
29
|
|
30
30
|
EitilWrapper::SingleMethodJob.perform_now(
|
31
31
|
*args, _class: to_s, _method: _method.to_s, **kwargs
|
@@ -36,7 +36,20 @@ module EitilWrapper
|
|
36
36
|
else
|
37
37
|
_class.constantize
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
|
+
if args.present? and kwargs.present?
|
41
|
+
object.send _method, *args, **kwargs
|
42
|
+
|
43
|
+
elsif args.present?
|
44
|
+
object.send _method, *args
|
45
|
+
|
46
|
+
elsif kwargs.present?
|
47
|
+
object.send _method, **kwargs
|
48
|
+
|
49
|
+
else
|
50
|
+
object.send _method
|
51
|
+
end
|
52
|
+
|
40
53
|
end; end; end; end
|
41
54
|
|
42
55
|
|
data/lib/eitil/all.rb
CHANGED
@@ -7,7 +7,7 @@ Eitil::Layers.each do |layer|
|
|
7
7
|
begin
|
8
8
|
require "#{layer}/railtie"
|
9
9
|
require "#{layer}"
|
10
|
-
puts "succesfully required #{layer} and #{layer}/railtie" if Rails.env.development?
|
10
|
+
# puts "succesfully required #{layer} and #{layer}/railtie" if Rails.env.development?
|
11
11
|
|
12
12
|
rescue LoadError => e
|
13
13
|
puts "failed to require #{layer} and #{layer}/railtie"
|
data/lib/eitil/version.rb
CHANGED
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.1.
|
4
|
+
version: 1.1.7
|
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-
|
11
|
+
date: 2021-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -101,12 +101,16 @@ files:
|
|
101
101
|
- eitil_core/lib/eitil_core/argument_helpers/args_to_h_bang.rb
|
102
102
|
- eitil_core/lib/eitil_core/argument_helpers/args_to_ivars.rb
|
103
103
|
- eitil_core/lib/eitil_core/argument_helpers/args_to_ivars_bang.rb
|
104
|
+
- eitil_core/lib/eitil_core/array.rb
|
105
|
+
- eitil_core/lib/eitil_core/array/slice_hashes.rb
|
104
106
|
- eitil_core/lib/eitil_core/concerns.rb
|
105
107
|
- eitil_core/lib/eitil_core/concerns/include_concerns_of.rb
|
106
108
|
- eitil_core/lib/eitil_core/datetime.rb
|
107
109
|
- eitil_core/lib/eitil_core/datetime/prettify.rb
|
108
110
|
- eitil_core/lib/eitil_core/errors.rb
|
109
111
|
- eitil_core/lib/eitil_core/errors/raise_error.rb
|
112
|
+
- eitil_core/lib/eitil_core/files.rb
|
113
|
+
- eitil_core/lib/eitil_core/files/create_file.rb
|
110
114
|
- eitil_core/lib/eitil_core/float.rb
|
111
115
|
- eitil_core/lib/eitil_core/float/safe_to_i.rb
|
112
116
|
- eitil_core/lib/eitil_core/formatters.rb
|
@@ -123,6 +127,7 @@ files:
|
|
123
127
|
- eitil_core/lib/eitil_core/railtie.rb
|
124
128
|
- eitil_core/lib/eitil_core/safe_executions.rb
|
125
129
|
- eitil_core/lib/eitil_core/safe_executions/safe_call.rb
|
130
|
+
- eitil_core/lib/eitil_core/safe_executions/safe_rescue.rb
|
126
131
|
- eitil_core/lib/eitil_core/safe_executions/safe_send.rb
|
127
132
|
- eitil_core/lib/eitil_core/setters.rb
|
128
133
|
- eitil_core/lib/eitil_core/setters/set_ivars.rb
|
@@ -175,7 +180,7 @@ files:
|
|
175
180
|
- eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
|
176
181
|
- eitil_wrapper/lib/eitil_wrapper/jobs.rb
|
177
182
|
- eitil_wrapper/lib/eitil_wrapper/jobs/new_job.rb
|
178
|
-
- eitil_wrapper/lib/eitil_wrapper/jobs/
|
183
|
+
- eitil_wrapper/lib/eitil_wrapper/jobs/new_job_now.rb
|
179
184
|
- eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb
|
180
185
|
- eitil_wrapper/lib/eitil_wrapper/railtie.rb
|
181
186
|
- eitil_wrapper/lib/eitil_wrapper/request_logger.rb
|