eitil 1.0.3.e.1 → 1.1.2
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 +33 -0
- data/eitil_core/lib/eitil_core.rb +1 -0
- data/eitil_core/lib/eitil_core/application_controller/slice_params.rb +3 -0
- data/eitil_core/lib/eitil_core/application_record/all_associations.rb +3 -0
- data/eitil_core/lib/eitil_core/application_record/find_by_like.rb +3 -0
- data/eitil_core/lib/eitil_core/application_record/where_like.rb +3 -0
- data/eitil_core/lib/eitil_core/mocks.rb +6 -0
- data/eitil_core/lib/eitil_core/mocks/array.rb +39 -0
- data/eitil_core/lib/eitil_core/mocks/hash.rb +36 -0
- data/eitil_core/lib/eitil_core/mocks/string.rb +11 -0
- data/eitil_core/lib/eitil_core/railtie.rb +0 -3
- data/eitil_integrate/lib/eitil_integrate/application_exporter.rb +1 -0
- data/eitil_integrate/lib/eitil_integrate/application_exporter/default_export.rb +1 -0
- data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +1 -3
- data/eitil_integrate/lib/eitil_integrate/application_exporter/log_state.rb +45 -0
- data/eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb +9 -3
- data/eitil_integrate/lib/eitil_integrate/railtie.rb +0 -3
- data/eitil_store/lib/eitil_store/railtie.rb +0 -3
- data/eitil_support/lib/eitil_support/railtie.rb +0 -3
- data/eitil_wrapper/README.md +24 -0
- data/eitil_wrapper/lib/eitil_wrapper.rb +2 -1
- data/eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb +3 -0
- data/eitil_wrapper/lib/eitil_wrapper/railtie.rb +24 -7
- data/eitil_wrapper/lib/eitil_wrapper/request_logger.rb +5 -0
- data/eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb +48 -0
- data/eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb +17 -0
- data/eitil_wrapper/lib/eitil_wrapper/scopes/default_scopes.rb +6 -0
- data/lib/eitil/all.rb +3 -2
- data/lib/eitil/railtie.rb +6 -8
- data/lib/eitil/version.rb +1 -1
- metadata +12 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e3982f2e32bcdb5ed52c9e58a0a811278229b59fd6e2f33aed590f0b7489ca5
|
4
|
+
data.tar.gz: 2046136ba0059bc70a850744685406629e00571d793668303935451892b03740
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 938b21d23f8e02911df52706504d1448df1cb9ec4dadbc44ae73075a45d7555b98c8c6b8ff2ac44647fdefe76f70cf7068be3f8ed2a4a73ab1430830460a2334
|
7
|
+
data.tar.gz: cd61ca8e8d1a2fbc06a40c2af036be4fdd11b4785b34384344c442f454e40f441ee6550e557c1716c1f9671ecfeefb1ad816ba98ee62c34260f2e9e1d08b4980
|
data/eitil_core/README.md
CHANGED
@@ -259,6 +259,39 @@ Find.gem_path(gem_name)
|
|
259
259
|
```
|
260
260
|
|
261
261
|
|
262
|
+
## Mocks
|
263
|
+
|
264
|
+
```ruby
|
265
|
+
|
266
|
+
require "eitil_core/mocks"
|
267
|
+
|
268
|
+
```
|
269
|
+
|
270
|
+
```ruby
|
271
|
+
# require "eitil_core/mocks/string"
|
272
|
+
|
273
|
+
String.mock(n=25)
|
274
|
+
# String.mock(10) # ==> "oooooo c nnnnnnnnnn ttttttttt p kkk r ppppp rrrrrrr uuu"
|
275
|
+
```
|
276
|
+
|
277
|
+
```ruby
|
278
|
+
# require "eitil_core/mocks/array"
|
279
|
+
|
280
|
+
Array.mock(n=10, type=Integer, &block)
|
281
|
+
# Array.mock # ==> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
282
|
+
# Array.mock(10, Float) #==> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
|
283
|
+
# Built-in methods are provided for classes Integer, Float, String, Date, Time
|
284
|
+
# But any other class is accepted as well, also your own classes such as User, Shift and Environment
|
285
|
+
```
|
286
|
+
|
287
|
+
```ruby
|
288
|
+
# require "eitil_core/mocks/hash"
|
289
|
+
|
290
|
+
Hash.mock(n=10)
|
291
|
+
# Hash.mock(10) #==> {"a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8, "i"=>9, "j"=>10}
|
292
|
+
```
|
293
|
+
|
294
|
+
|
262
295
|
## SafeExecutions
|
263
296
|
|
264
297
|
```ruby
|
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/mocks/array"
|
3
|
+
|
4
|
+
class Array
|
5
|
+
|
6
|
+
def self.mock(n=10, type=Integer, &block)
|
7
|
+
|
8
|
+
return Array.new(n,&block) if block_given?
|
9
|
+
|
10
|
+
case type.to_s
|
11
|
+
|
12
|
+
when 'Integer'
|
13
|
+
Array.new(n) {|i| i+1}
|
14
|
+
|
15
|
+
when 'Float'
|
16
|
+
Array.new(n) {|i| i+1.0}
|
17
|
+
|
18
|
+
when 'String'
|
19
|
+
words = String.mock(n).split
|
20
|
+
Array.new(n) {|i| words[i]}
|
21
|
+
|
22
|
+
when 'Time'
|
23
|
+
time_now = Time.now
|
24
|
+
Array.new(n) {|i| time_now + (i * (60 * 60 * 24)) }
|
25
|
+
|
26
|
+
when 'Date'
|
27
|
+
date_now = Date.today
|
28
|
+
Array.new(n) {|i| date_now + (i * 1) }
|
29
|
+
|
30
|
+
else
|
31
|
+
Array.new(n) do
|
32
|
+
type.send(:new) rescue
|
33
|
+
raise NoNewMethodError, 'Please provide Object that responds to `new` call'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/mocks/hash"
|
3
|
+
|
4
|
+
class Hash
|
5
|
+
|
6
|
+
def self.mock(n=10)
|
7
|
+
range = mock_size(n).to_a
|
8
|
+
Hash[Array.mock(n) {|m| range[m] }.zip(Array.mock(n))]
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def self.mock_size(n)
|
14
|
+
EitilCore::Mock.hash_range_for(n)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
module EitilCore
|
21
|
+
module Mock
|
22
|
+
|
23
|
+
def self.hash_range_for(n)
|
24
|
+
range = nil
|
25
|
+
i = 0
|
26
|
+
|
27
|
+
until range != nil do
|
28
|
+
range = ('a'..'z') if n <= 26
|
29
|
+
range = ('a'.."z#{'z'*i}") if n < (26 + (26 ** (i+1) )) && !range
|
30
|
+
i += 1
|
31
|
+
end
|
32
|
+
range
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -17,6 +17,7 @@ require_relative "application_exporter/setters"
|
|
17
17
|
require_relative "application_exporter/selectors"
|
18
18
|
require_relative "application_exporter/lookups"
|
19
19
|
require_relative "application_exporter/infos"
|
20
|
+
require_relative "application_exporter/log_state"
|
20
21
|
|
21
22
|
# the AutoSum module, which is a seperately functioning module (service)
|
22
23
|
require_relative "application_exporter/auto_sum"
|
@@ -4,15 +4,13 @@
|
|
4
4
|
require "eitil_core/setters/set_ivars"
|
5
5
|
require "eitil_core/argument_helpers/all_kwargs_to_ivars"
|
6
6
|
|
7
|
-
# EitilIntegrate::RubyXL::ApplicationExporter
|
8
|
-
|
9
7
|
module EitilIntegrate
|
10
8
|
module RubyXL
|
11
9
|
class ApplicationExporter
|
12
10
|
|
13
11
|
include ActionView::Helpers::NumberHelper
|
14
12
|
|
15
|
-
attr_accessor :book, :sheet, :x, :y, :start_date, :end_date, :date_range
|
13
|
+
attr_accessor :book, :sheet, :x, :y, :start_date, :end_date, :date_range, :write_log
|
16
14
|
|
17
15
|
def initialize(attributes={})
|
18
16
|
all_kwargs_to_ivars binding, :attributes
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
# require "eitil_integrate/application_exporter/log_state"
|
3
|
+
|
4
|
+
module EitilIntegrate::RubyXL
|
5
|
+
class ApplicationExporter
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def log_state
|
10
|
+
|
11
|
+
return unless write_log == true
|
12
|
+
|
13
|
+
# create_log_sheet
|
14
|
+
book.add_worksheet('log')
|
15
|
+
|
16
|
+
# manage sheets
|
17
|
+
previous_sheet = @sheet.sheet_name
|
18
|
+
@sheet = @book["log"]
|
19
|
+
|
20
|
+
# manage coordinates
|
21
|
+
previous_x = @x
|
22
|
+
@x = 0
|
23
|
+
|
24
|
+
# log everything we want to log
|
25
|
+
report_state
|
26
|
+
|
27
|
+
# restore what was previously active
|
28
|
+
@sheet = @book[previous_sheet]
|
29
|
+
@x = previous_x
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def report_state
|
34
|
+
instance_variables.each do |ivar|
|
35
|
+
|
36
|
+
variable_name = ivar.to_s
|
37
|
+
variable_value = instance_variable_get(ivar).to_s
|
38
|
+
|
39
|
+
array_to_row [variable_name, variable_value]
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -22,15 +22,21 @@ module EitilIntegrate::RubyXL
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def exporter_infos
|
25
|
-
exporter_constants.map { |_c| { "#{_c}": _c.info || {} } }.inject &:merge
|
25
|
+
exporter_constants.map { |_c| { "#{_c.to_s.remove("Exporter")}": _c.info || {} } }.inject &:merge
|
26
26
|
end
|
27
27
|
|
28
|
-
alias_method :taxonomy, :exporter_infos
|
29
|
-
|
30
28
|
def exporter_info(exporter, info)
|
31
29
|
exporter_infos[exporter]&.dig(info)
|
32
30
|
end
|
33
31
|
|
32
|
+
# returns the exporter_infos, without the datatypes – for taxonomy purpuses, the field
|
33
|
+
# names are often sufficient
|
34
|
+
def exporter_taxonomy
|
35
|
+
exporter_infos.transform_values do |settings|
|
36
|
+
settings.transform_values { |info| info.first.is_a?(Hash) ? info.first.keys : info }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
34
40
|
def exporter_params
|
35
41
|
exporter_infos.transform_values { |v| [v[:required], v[:optional]].flatten.compact }
|
36
42
|
end
|
data/eitil_wrapper/README.md
CHANGED
@@ -179,3 +179,27 @@ Scopes are generated through the columns of your model's database table. Which s
|
|
179
179
|
```
|
180
180
|
|
181
181
|
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
## EitilWrapper::RequestLogger
|
186
|
+
|
187
|
+
```ruby
|
188
|
+
|
189
|
+
require "eitil_wrapper/request_logger"
|
190
|
+
|
191
|
+
```
|
192
|
+
|
193
|
+
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.
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
|
197
|
+
include EitilWrapper::RequestLogger::ControllerMixin
|
198
|
+
before_action :log_request
|
199
|
+
|
200
|
+
```
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
@@ -2,6 +2,9 @@
|
|
2
2
|
# somehow leads to errors in the initialization process. Ideally, this code would be
|
3
3
|
# defined in eitil_wrapper/jobs/single_method_job.rb and dispatched in eitil_wrapper/railtie.rb
|
4
4
|
|
5
|
+
# require "eitil_wrapper/railtie" to run the dynamic dispatch as an init hook during boot
|
6
|
+
require "eitil_wrapper/railtie"
|
7
|
+
|
5
8
|
module EitilWrapper
|
6
9
|
module CreateSingleMethodJob
|
7
10
|
end
|
@@ -1,22 +1,17 @@
|
|
1
1
|
|
2
|
-
require "rails"
|
3
|
-
require "eitil_wrapper"
|
4
|
-
|
5
2
|
module EitilWrapper
|
6
3
|
|
7
4
|
class Railtie < Rails::Railtie
|
8
5
|
|
6
|
+
# Dynamic dispatching after initialization of Rails classes.
|
7
|
+
|
9
8
|
initializer "my_railtie.configure_rails_initialization", options: :after do |app|
|
10
9
|
|
11
|
-
# Dynamic dispatching after initialization of Rails classes.
|
12
10
|
|
13
|
-
# Scopes
|
14
|
-
|
15
11
|
if Object.const_defined?('EitilWrapper::Scopes::DefaultScopes')
|
16
12
|
::ApplicationRecord.send(:extend, EitilWrapper::Scopes::DefaultScopes)
|
17
13
|
end
|
18
14
|
|
19
|
-
# Jobs
|
20
15
|
|
21
16
|
if Object.const_defined?('EitilWrapper::CreateSingleMethodJob')
|
22
17
|
|
@@ -44,6 +39,28 @@ module EitilWrapper
|
|
44
39
|
object.send _method, *args, **kwargs
|
45
40
|
end; end; end; end
|
46
41
|
|
42
|
+
|
43
|
+
if Object.const_defined?('EitilWrapper::RequestLogger::CreateLoggerJob')
|
44
|
+
|
45
|
+
module ::EitilWrapper
|
46
|
+
module RequestLogger
|
47
|
+
class LoggerJob < ::ApplicationJob
|
48
|
+
|
49
|
+
def perform(logger_object)
|
50
|
+
|
51
|
+
# set path for logger
|
52
|
+
$request_logger_path ||= "#{Rails.root}/log/request_logger.log"
|
53
|
+
|
54
|
+
# create logger, if not present
|
55
|
+
if Dir[$request_logger_path].blank? || $request_logger.blank?
|
56
|
+
$request_logger = Logger.new($request_logger_path)
|
57
|
+
end
|
58
|
+
|
59
|
+
# add logger_object to logger
|
60
|
+
$request_logger.info(logger_object)
|
61
|
+
|
62
|
+
end; end; end; end; end
|
63
|
+
|
47
64
|
end
|
48
65
|
end
|
49
66
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
# require "eitil_wrapper/request_logger/controller_mixin"
|
3
|
+
|
4
|
+
require_relative "logger_job"
|
5
|
+
|
6
|
+
module EitilWrapper
|
7
|
+
module RequestLogger
|
8
|
+
module ControllerMixin
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def log_request
|
13
|
+
$request_logger_path ||= "#{Rails.root}/log/request_logger.log"
|
14
|
+
EitilWrapper::RequestLogger::LoggerJob.perform_later(request_logger_object)
|
15
|
+
end
|
16
|
+
|
17
|
+
def request_logger_object
|
18
|
+
|
19
|
+
log_request = {
|
20
|
+
path: request.env["REQUEST_PATH"],
|
21
|
+
method: request.env["REQUEST_METHOD"],
|
22
|
+
query_str: request.env["QUERY_STRING"],
|
23
|
+
}
|
24
|
+
|
25
|
+
log_params = {
|
26
|
+
params: params.as_json
|
27
|
+
}
|
28
|
+
|
29
|
+
log_attributes = {
|
30
|
+
time: Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
31
|
+
}
|
32
|
+
|
33
|
+
log = {
|
34
|
+
request: log_request,
|
35
|
+
params: log_params,
|
36
|
+
attributes: log_attributes
|
37
|
+
}
|
38
|
+
|
39
|
+
log_time = log_attributes[:time]
|
40
|
+
log_strf = log.deep_symbolize_keys.to_s
|
41
|
+
# log_strf may be hashed through eval(log_strf)
|
42
|
+
|
43
|
+
return log_strf
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
# require "eitil_wrapper/request_logger/logger_job"
|
3
|
+
|
4
|
+
# require "eitil_wrapper/railtie" to run the dynamic dispatch as an init hook during boot
|
5
|
+
require "eitil_wrapper/railtie"
|
6
|
+
|
7
|
+
# ISSUE: this code is currently defined eitil_wrapper/railtie.rb, since module inclusion
|
8
|
+
# somehow leads to errors in the initialization process. Ideally, this code would be
|
9
|
+
# defined in eitil_wrapper/request_logger/logger_job.rb and dispatched in eitil_wrapper/railtie.rb
|
10
|
+
|
11
|
+
module EitilWrapper
|
12
|
+
module RequestLogger
|
13
|
+
module CreateLoggerJob
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/eitil/all.rb
CHANGED
@@ -6,10 +6,11 @@ Eitil::Layers.each do |layer|
|
|
6
6
|
|
7
7
|
begin
|
8
8
|
require "#{layer}/railtie"
|
9
|
-
|
9
|
+
require "#{layer}"
|
10
|
+
puts "succesfully required #{layer} and #{layer}/railtie"
|
10
11
|
|
11
12
|
rescue LoadError => e
|
12
|
-
puts "failed to require #{layer}/railtie"
|
13
|
+
puts "failed to require #{layer} and #{layer}/railtie"
|
13
14
|
puts "message: #{e.message}"
|
14
15
|
# binding.pry
|
15
16
|
|
data/lib/eitil/railtie.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
|
2
|
-
require 'eitil/railtie'
|
3
|
-
require 'pry'
|
4
|
-
|
5
2
|
# Constants
|
6
3
|
|
7
4
|
module Eitil
|
@@ -11,19 +8,20 @@ module Eitil
|
|
11
8
|
|
12
9
|
end
|
13
10
|
|
14
|
-
|
15
11
|
# Configuration
|
16
12
|
|
17
13
|
module Eitil
|
18
14
|
|
19
15
|
class Railtie < ::Rails::Railtie
|
20
16
|
|
21
|
-
# Add lib dirs to $LOAD_PATH, making them available in your main app.
|
22
|
-
|
23
|
-
binding.pry
|
24
|
-
|
25
17
|
Eitil::Layers.each do |layer|
|
18
|
+
|
19
|
+
# Add lib dirs to $LOAD_PATH, making them available in your main app.
|
26
20
|
$LOAD_PATH << "#{Eitil::Root}/#{layer}/lib"
|
21
|
+
|
22
|
+
# Load railtie into main app, enabling on the fly inclusion of dispatches.
|
23
|
+
require "#{layer}/railtie"
|
24
|
+
|
27
25
|
end
|
28
26
|
|
29
27
|
end
|
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.
|
4
|
+
version: 1.1.2
|
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-06-
|
11
|
+
date: 2021-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -110,6 +110,10 @@ files:
|
|
110
110
|
- eitil_core/lib/eitil_core/lookups.rb
|
111
111
|
- eitil_core/lib/eitil_core/lookups/all_methods.rb
|
112
112
|
- eitil_core/lib/eitil_core/lookups/gem_path.rb
|
113
|
+
- eitil_core/lib/eitil_core/mocks.rb
|
114
|
+
- eitil_core/lib/eitil_core/mocks/array.rb
|
115
|
+
- eitil_core/lib/eitil_core/mocks/hash.rb
|
116
|
+
- eitil_core/lib/eitil_core/mocks/string.rb
|
113
117
|
- eitil_core/lib/eitil_core/railtie.rb
|
114
118
|
- eitil_core/lib/eitil_core/safe_executions.rb
|
115
119
|
- eitil_core/lib/eitil_core/safe_executions/safe_call.rb
|
@@ -134,6 +138,7 @@ files:
|
|
134
138
|
- eitil_integrate/lib/eitil_integrate/application_exporter/helpers.rb
|
135
139
|
- eitil_integrate/lib/eitil_integrate/application_exporter/infos.rb
|
136
140
|
- eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb
|
141
|
+
- eitil_integrate/lib/eitil_integrate/application_exporter/log_state.rb
|
137
142
|
- eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb
|
138
143
|
- eitil_integrate/lib/eitil_integrate/application_exporter/selectors.rb
|
139
144
|
- eitil_integrate/lib/eitil_integrate/application_exporter/setters.rb
|
@@ -167,6 +172,9 @@ files:
|
|
167
172
|
- eitil_wrapper/lib/eitil_wrapper/jobs/new_job_debugger.rb
|
168
173
|
- eitil_wrapper/lib/eitil_wrapper/jobs/single_method_job.rb
|
169
174
|
- eitil_wrapper/lib/eitil_wrapper/railtie.rb
|
175
|
+
- eitil_wrapper/lib/eitil_wrapper/request_logger.rb
|
176
|
+
- eitil_wrapper/lib/eitil_wrapper/request_logger/controller_mixin.rb
|
177
|
+
- eitil_wrapper/lib/eitil_wrapper/request_logger/logger_job.rb
|
170
178
|
- eitil_wrapper/lib/eitil_wrapper/routes.rb
|
171
179
|
- eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
|
172
180
|
- eitil_wrapper/lib/eitil_wrapper/scopes.rb
|
@@ -193,9 +201,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
201
|
version: '0'
|
194
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
203
|
requirements:
|
196
|
-
- - "
|
204
|
+
- - ">="
|
197
205
|
- !ruby/object:Gem::Version
|
198
|
-
version:
|
206
|
+
version: '0'
|
199
207
|
requirements: []
|
200
208
|
rubygems_version: 3.1.2
|
201
209
|
signing_key:
|