eco-helpers 3.0.6 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18d17b73673167619a4e704756a4e59f5d81d61a97e495721e100fe3e10d2374
4
- data.tar.gz: a873e8e8970c5d67aa224ac226bec8194f81e2025bcd434b4f1005b8ddba21a3
3
+ metadata.gz: c5f99b7ad6dad2fcd262a6269bbe2c7a2acae695b077712ce745c9f0746e2580
4
+ data.tar.gz: de2217f416b703f1cc0ae06f6c42bddbebedef906013b128b5efcdc552df40af
5
5
  SHA512:
6
- metadata.gz: 362fa919cbbdd98a7d69e99fa793f42a31fd790513d4d0e62db1e5838bf4937526fceb03139f394c069fd376d7a10c2cfcedf7207cda9377838b441022fa1a2f
7
- data.tar.gz: 95064a493e111f68cf5da145f6322e9a30d1c7a2ce48c022b776109fc581ba7c1fd63dbb0a26dae7dcbd0c67086ec5ee0c7c507deae55cf45aa8ed73704ecb4c
6
+ metadata.gz: 6149a32bf28606ac1051a127deabefd66fbab577700035f36ba01b9268438b1223423a30e399c1efaed92858586722a0dfa6d7d1a180a4ff0870c894ac730fde
7
+ data.tar.gz: 1799bbf948a1725f99b567b0934c29eb53f3361db5c22c660e616e876cc857c15c85330db3d2e60df4a6d5f1c0c9697722e1ded6b114897cbe8b5a257fd06511
data/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [3.0.7] - 2024-08-xx
5
+ ## [3.0.9] - 2024-08-xx
6
6
 
7
7
  ### Added
8
8
 
@@ -10,6 +10,33 @@ All notable changes to this project will be documented in this file.
10
10
 
11
11
  ### Fixed
12
12
 
13
+ ## [3.0.8] - 2024-08-30
14
+
15
+ ### Added
16
+
17
+ - options to choose `-batch-mode` [`:batch`|`:job`]
18
+
19
+ ### Changed
20
+
21
+ - When `-skip-api-policies`
22
+ - Default policy: to skip non generic logic when api policies are skept
23
+ - Still run default policies
24
+
25
+ ### Fixed
26
+
27
+ - unknown option `suggestions`
28
+
29
+ ## [3.0.7] - 2024-08-27
30
+
31
+ ### Added
32
+
33
+ - `Eco::API::UseCases::GraphQL::Helpers::Base::ErrorHandling`
34
+
35
+ ### Fixed
36
+
37
+ - `Service:TreeUpdate`
38
+ - Should NOT call `re_archive` when there was a error that is NOT due to an interrupt (i.e. so when raised **error** or `exit`ed)
39
+
13
40
  ## [3.0.6] - 2024-08-26
14
41
 
15
42
  ### Added
data/Rakefile CHANGED
@@ -19,6 +19,11 @@ RSpec::Core::RakeTask.new(:spec_fast) do |task|
19
19
  end
20
20
  task(rspec_fast: :spec_fast)
21
21
 
22
+ desc "run rubocop diaplying cop names"
23
+ RuboCop::RakeTask.new(:rubocop) do |t|
24
+ t.options = ['--display-cop-names']
25
+ end
26
+
22
27
  # default task name is yard
23
28
  desc "Yard: generate all the documentation"
24
29
  YARD::Rake::YardocTask.new(:doc) do |t|
data/eco-helpers.gemspec CHANGED
@@ -1,3 +1,4 @@
1
+ # rubocop:disable Gemspec/DevelopmentDependencies
1
2
  lib = File.expand_path('lib', __dir__)
2
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
4
 
@@ -54,3 +55,5 @@ Gem::Specification.new do |spec|
54
55
  spec.add_dependency 'roo-xls', '>= 1.2.0', '< 1.3'
55
56
  spec.add_dependency 'rubyzip', '>= 2.3.2', '< 2.4'
56
57
  end
58
+
59
+ # rubocop:enable Gemspec/DevelopmentDependencies
@@ -14,8 +14,10 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
14
14
  self.account_removed_count = 0
15
15
 
16
16
  people.each do |person|
17
- remove_account_when_no_email!(person) if person.email.to_s.empty?
18
- next unless account = person.account
17
+ remove_account_when_no_email!(person)
18
+
19
+ next if options.dig(:skip, :api_policies)
20
+ next unless (account = person.account)
19
21
  next if options.dig(:exclude, :account)
20
22
 
21
23
  add_def_policy_group_if_applicable!(account)
@@ -35,6 +37,7 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
35
37
  end
36
38
 
37
39
  def remove_account_when_no_email!(person)
40
+ return unless person.email.to_s.empty?
38
41
  return unless person.account
39
42
 
40
43
  self.account_removed_count += 1 if had_account?(person)
@@ -15,8 +15,10 @@ module Eco
15
15
  end
16
16
 
17
17
  def add(policy)
18
- raise "Expected Eco::API::Policies::Policy object. Given: #{policy}" unless policy.is_a?(Eco::API::Policies::Policy)
19
- super(policy)
18
+ msg = "Expected Eco::API::Policies::Policy object. Given: #{policy}"
19
+ raise ArgumentError, msg unless policy.is_a?(Eco::API::Policies::Policy)
20
+
21
+ super
20
22
  end
21
23
 
22
24
  def launch(people:, session:, job:, options: {})
@@ -350,9 +350,12 @@ module Eco
350
350
  # Applies the changes introduced by api policies
351
351
  def apply_policies(pre_queue)
352
352
  people(pre_queue).tap do |entries|
353
- next if options.dig(:skip, :api_policies)
353
+ if options.dig(:skip, :api_policies)
354
+ policies = session.default_policies
355
+ else
356
+ policies = session.policies
357
+ end
354
358
 
355
- policies = session.policies
356
359
  next if policies.empty?
357
360
 
358
361
  policies.launch(
@@ -12,6 +12,16 @@ module Eco
12
12
  end
13
13
  end
14
14
 
15
+ # @return [Symbol] the batch mode to run
16
+ def batch_mode(opts = self.options)
17
+ opts.dig(:workflow, :batch, :mode) || :batch
18
+ end
19
+
20
+ # @return [Boolean] are we running in `:job` mode?
21
+ def job_mode?(opts = self.options)
22
+ batch_mode(opts) == :job
23
+ end
24
+
15
25
  # Gets the _people_ of the organization according `params`.
16
26
  # If `people` is not `nil`, scopes to only the people specified.
17
27
  # @note
@@ -113,6 +123,11 @@ module Eco
113
123
  )
114
124
  end
115
125
 
126
+ # Default way to retrieve options (unless provided)
127
+ def options
128
+ ASSETS.cli.options
129
+ end
130
+
116
131
  def launch_batch( # rubocop:disable Metrics/AbcSize
117
132
  data,
118
133
  method:,
@@ -120,7 +135,8 @@ module Eco
120
135
  job_mode: true, # rubocop:disable Lint/UnusedMethodArgument
121
136
  per_page: DEFAULT_BATCH_BLOCK,
122
137
  people_api: api&.people,
123
- silent: false
138
+ silent: false,
139
+ options: self.options
124
140
  )
125
141
  iteration = 1
126
142
  done = 0
@@ -145,7 +161,7 @@ module Eco
145
161
 
146
162
  start_slice = Time.now
147
163
  offer_retry_on(Ecoportal::API::Errors::TimeOut) do
148
- people_api.batch(job_mode: false) do |batch|
164
+ people_api.batch(job_mode: job_mode?(options)) do |batch|
149
165
  slice.each do |person|
150
166
  batch.public_send(method, person) do |response|
151
167
  faltal("Request with no response") unless response
@@ -365,6 +365,7 @@ module Eco
365
365
  # @return [Eco::API::Policies]
366
366
  def policies
367
367
  @policies = self["policies"] ||= Eco::API::Policies.new
368
+
368
369
  if block_given?
369
370
  yield(@policies)
370
371
  self
@@ -252,11 +252,15 @@ module Eco
252
252
  # @return [Eco::API::Policies]
253
253
  def policies
254
254
  @policies ||= config.policies.dup.tap do |policies|
255
- default_policies = Eco::API::Policies::DefaultPolicies.new
256
255
  policies.merge(default_policies)
257
256
  end
258
257
  end
259
258
 
259
+ # The native policies
260
+ def default_policies
261
+ @default_policies ||= Eco::API::Policies::DefaultPolicies.new
262
+ end
263
+
260
264
  # Set of helpers to simplify your code
261
265
  # @see Eco::API::MicroCases
262
266
  # @return [Eco::API::MicroCases]
@@ -2,6 +2,7 @@ module Eco::API::UseCases::GraphQL::Helpers::Base
2
2
  # Basic stuff you would need in any use case
3
3
  module CaseEnv
4
4
  include Eco::Language::AuxiliarLogger
5
+ include ErrorHandling
5
6
 
6
7
  private
7
8
 
@@ -0,0 +1,52 @@
1
+ module Eco::API::UseCases::GraphQL::Helpers::Base
2
+ # Basic stuff you would need in any use case
3
+ module ErrorHandling
4
+ include Eco::Language::AuxiliarLogger
5
+
6
+ attr_reader :exception
7
+
8
+ private
9
+
10
+ def interrupted?(err = exception)
11
+ interrupt_errors.any? {|klass| err.is_a?(klass)}
12
+ end
13
+
14
+ def error_raised?
15
+ exception && !interrupted?
16
+ end
17
+
18
+ def rescued
19
+ yield
20
+ rescue StandardError => err
21
+ self.exception ||= err
22
+ log(:error) { err.patch_full_message }
23
+ end
24
+
25
+ def with_error_handling
26
+ @exception = nil
27
+ yield
28
+ rescue SystemExit => sext
29
+ @exception = sext
30
+ exit sext.status
31
+ rescue *interrupt_errors => int
32
+ @exception = int
33
+ raise
34
+ rescue SystemStackError
35
+ puts $! # rubocop:disable Style/SpecialGlobalVars
36
+ puts caller[0..100]
37
+ raise
38
+ rescue StandardError, SignalException => err
39
+ @exception = err
40
+ raise
41
+ end
42
+
43
+ def interrupt_errors
44
+ return @interrupt_errors if @interrupt_errors
45
+
46
+ errs = [Interrupt]
47
+ errs << IRB::Abort if Object.const_defined?(:IRB) && IRB.const_defined?(:Abort)
48
+
49
+ @interrupt_errors = errs
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,6 @@
1
1
  module Eco::API::UseCases::GraphQL::Helpers
2
2
  module Base
3
+ require_relative 'base/error_handling'
3
4
  require_relative 'base/case_env'
4
5
  require_relative 'base/graphql_env'
5
6
 
@@ -24,38 +24,39 @@ class Eco::API::UseCases::GraphQL::Samples::Location
24
24
 
25
25
  # Main processor
26
26
  def process # rubocop:disable Metrics/AbcSize
27
- self.error = false
28
- self.exception = nil
27
+ self.error = false
29
28
 
30
- super if defined?(super)
29
+ with_error_handling do
30
+ super if defined?(super)
31
31
 
32
- # this may trigger a backup of the tagtree
33
- self.current_tree ||= live_tree
32
+ # this may trigger a backup of the tagtree
33
+ self.current_tree ||= live_tree
34
34
 
35
- inputs(force_continue: force_continue?) do |input, stage|
36
- results[stage] ||= []
35
+ inputs(force_continue: force_continue?) do |input, stage|
36
+ results[stage] ||= []
37
37
 
38
- track_mode = batch_tree_track_mode(stage)
38
+ track_mode = batch_tree_track_mode(stage)
39
39
 
40
- # yields the result of each batch
41
- sliced_batches(input, desc: stage, track_tree_mode: track_mode) do |sliced_input, response, page, pages, done, total| # rubocop:disable Metrics/ParameterLists, Layout/LineLength
42
- track_current_tree(response&.structure)
40
+ # yields the result of each batch
41
+ sliced_batches(input, desc: stage, track_tree_mode: track_mode) do |sliced_input, response, page, pages, done, total| # rubocop:disable Metrics/ParameterLists, Layout/LineLength
42
+ track_current_tree(response&.structure)
43
43
 
44
- results[stage] << (page_results = request_results_class.new(sliced_input, response))
45
- update_tags_remap_table(page_results, stage, current_tree)
44
+ results[stage] << (page_results = request_results_class.new(sliced_input, response))
45
+ update_tags_remap_table(page_results, stage, current_tree)
46
+
47
+ self.error = page_errors?(page_results, page, pages, done, total, stage: stage)
48
+ break if error
49
+ end
46
50
 
47
- self.error = page_errors?(page_results, page, pages, done, total, stage: stage)
48
51
  break if error
49
52
  end
50
-
51
- break if error
52
53
  end
53
54
  rescue SystemStackError
54
55
  puts $! # rubocop:disable Style/SpecialGlobalVars
55
56
  puts caller[0..100]
56
57
  raise
57
- rescue StandardError => e
58
- log(:error) { self.exception ||= e.patch_full_message }
58
+ rescue StandardError => err
59
+ log(:error) { err.patch_full_message }
59
60
  raise
60
61
  ensure
61
62
  rescued { self.tags_remap_csv_file = generate_tags_remap_csv }
@@ -3,13 +3,7 @@ class Eco::API::UseCases::GraphQL::Samples::Location
3
3
  module Command::Results
4
4
  include Eco::API::UseCases::GraphQL::Helpers::Base::CaseEnv
5
5
 
6
- attr_accessor :error, :exception
7
-
8
- def rescued
9
- yield
10
- rescue StandardError => e
11
- log(:error) { self.exception ||= e.patch_full_message }
12
- end
6
+ attr_accessor :error
13
7
 
14
8
  def request_results_class
15
9
  Eco::API::UseCases::GraphQL::Helpers::Location::Command::Results
@@ -7,7 +7,7 @@ class Eco::API::UseCases::GraphQL::Samples::Location
7
7
 
8
8
  class << self
9
9
  def included(base)
10
- super(base)
10
+ super
11
11
  base.send :include, Eco::API::UseCases::GraphQL::Samples::Location::Service::TreeDiff
12
12
  base.send :include, Eco::API::UseCases::GraphQL::Samples::Location::Command::DSL
13
13
  base.send :include, Eco::API::UseCases::GraphQL::Utils::Sftp
@@ -17,9 +17,11 @@ class Eco::API::UseCases::GraphQL::Samples::Location
17
17
 
18
18
  module InstanceMethods
19
19
  def process
20
- super
20
+ with_error_handling do
21
+ super
22
+ end
21
23
  ensure
22
- rescued { re_archive }
24
+ rescued { re_archive } unless error_raised?
23
25
  rescued { email_digest('TagTree Update') }
24
26
  end
25
27
 
@@ -28,6 +30,7 @@ class Eco::API::UseCases::GraphQL::Samples::Location
28
30
  # @note this is an additional necessary step
29
31
  def re_archive
30
32
  return if simulate?
33
+ return if error_raised?
31
34
 
32
35
  stage = :rearchive
33
36
 
@@ -85,9 +88,9 @@ class Eco::API::UseCases::GraphQL::Samples::Location
85
88
  return if simulate?
86
89
  return if options.dig(:workflow, :no_email)
87
90
 
88
- digest_msgs = logger.cache.logs(level: %i[info error warn])
89
- exception = exception ? " - Exception!" : ''
90
- subject = "#{config.active_enviro} - #{title}#{exception}"
91
+ digest_msgs = logger.cache.logs(level: %i[info error warn])
92
+ str_exception = exception ? " - Exception!" : ''
93
+ subject = "#{config.active_enviro} - #{title}#{str_exception}"
91
94
  session.mail(subject: subject, body: digest_msgs.join)
92
95
  end
93
96
 
@@ -58,23 +58,17 @@ class Eco::API::UseCases::GraphQL::Samples::Location
58
58
  next if prev_id == new_id
59
59
 
60
60
  tags_remap_table << [[prev_id], [new_id]]
61
-
62
- # next unless ref_tree.is_a?(Eco::API::Organization::TagTree)
63
- # next unless ref_tree.tag?(new_id)
64
-
65
- # msg = "Node '#{prev_id}' was updated to '#{new_id}', "
66
- # msg << "but in current structure '#{new_id}' is not present"
67
- # log(:warn) { msg }
68
61
  end
69
62
  end
70
63
 
71
64
  # Generates the final tags remap file
72
65
  def generate_tags_remap_csv(filename = tags_remap_csv_full_filename)
73
- return nil if tags_remap_table.empty?
66
+ return if tags_remap_table.empty?
74
67
 
75
68
  timestamp_file(filename).tap do |file|
76
69
  CSV.open(file, 'w') do |csv|
77
70
  csv << %w[prev_node_ids new_node_ids]
71
+
78
72
  tags_remap_table.each do |tags_remap|
79
73
  csv << tags_remap.to_csv_row
80
74
  end
@@ -8,7 +8,7 @@ module Eco::API::UseCases::GraphQL::Samples::Location::Service
8
8
  module Convertible
9
9
  class << self
10
10
  def included(base)
11
- super(base)
11
+ super
12
12
  base.send :include, Inputable
13
13
  end
14
14
  end
@@ -24,12 +24,15 @@ module Eco::API::UseCases::GraphQL::Samples::Location::Service
24
24
 
25
25
  csv.transform_headers do |name|
26
26
  next name unless header_maps.key?(name)
27
+
27
28
  header_maps[name]
28
29
  end
29
30
  end.then do |csv|
30
31
  transform_input_csv(csv).tap do |res|
31
32
  next if res.is_a?(Eco::CSV::Table)
32
- raise ArgumentError, "Expecting and Eco::CSV::Table. Given: #{res.class}"
33
+
34
+ msg = "Expecting and Eco::CSV::Table. Given: #{res.class}"
35
+ raise ArgumentError, msg
33
36
  end
34
37
  end
35
38
  end
@@ -46,13 +46,15 @@ module Eco::API::UseCases::GraphQL::Samples
46
46
 
47
47
  class << self
48
48
  def included(base)
49
- super(base)
49
+ super
50
50
  base.send :include, Convertible
51
51
  end
52
52
  end
53
53
 
54
54
  def process
55
- compare
55
+ with_error_handling do
56
+ compare
57
+ end
56
58
  end
57
59
 
58
60
  def compare
@@ -31,10 +31,12 @@ module Eco::API::UseCases::GraphQL::Samples
31
31
  include Converter
32
32
 
33
33
  def process
34
- as_nodes_json(input_tagtree).tap do |list|
35
- next generate_live_nodes_file(list) unless list.empty?
34
+ with_error_handling do
35
+ as_nodes_json(input_tagtree).tap do |list|
36
+ next generate_live_nodes_file(list) unless list.empty?
36
37
 
37
- log(:error) { "There are no location nodes!" }
38
+ log(:error) { "There are no location nodes!" }
39
+ end
38
40
  end
39
41
  end
40
42
  end
data/lib/eco/assets.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  module Eco
2
2
  class Assets
3
-
4
3
  attr_reader :active_config
5
4
 
6
5
  def initialize
@@ -17,10 +16,12 @@ module Eco
17
16
 
18
17
  def config(key: active_config, update_active: true)
19
18
  configs[:default] ||= Eco::API::Session::Config.new(key)
19
+
20
20
  unless configs.key?(key)
21
- @active_config = key unless !update_active
21
+ @active_config = key if update_active
22
22
  configs[key] = configs[:default].clone(key)
23
23
  end
24
+
24
25
  configs[key].tap do |config|
25
26
  config.active_api(key) if config.apis.defined?(key)
26
27
  yield(config) if block_given?
@@ -36,6 +37,7 @@ module Eco
36
37
  @cli_init = true
37
38
  require_relative('cli_default')
38
39
  end
40
+
39
41
  @cli.tap { yield(@cli) if block_given? }
40
42
  end
41
43
  end
@@ -2,6 +2,8 @@ module Eco
2
2
  class CLI
3
3
  class Scripting
4
4
  module ArgsHelpers
5
+ class UnknownArgument < ArgumentError; end
6
+
5
7
  # @return [Array<String] the command line arguments.
6
8
  def argv
7
9
  @argv || ARGV
@@ -31,7 +33,8 @@ module Eco
31
33
  }
32
34
  unknown = arguments.unknown(**args) do |key, correct|
33
35
  next suggestions[key] = correct unless correct.empty?
34
- suggstions[key] = '-- not known similar options! --'
36
+
37
+ suggestions[key] = ['-- not known similar options! --']
35
38
  end
36
39
  unknown = unknown.select {|arg| is_modifier?(arg)} if only_options
37
40
 
@@ -49,7 +52,7 @@ module Eco
49
52
  msg << "\nUse 'ruby main.rb -org [-usecase] --help -options' for more information"
50
53
  msg << "\n - Please, remember that use case specific options "
51
54
  msg << "should come after the use case in the command line.\n"
52
- raise msg
55
+ raise UnknownArgument, msg
53
56
  end
54
57
 
55
58
  # @return [Boolean] if `key` is in the command line.
@@ -27,7 +27,7 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
27
27
  puts conf.usecases.help(refine: huc)
28
28
  end
29
29
 
30
- puts [
30
+ help_str = [
31
31
  "Please specify one of the below:",
32
32
  " -filters to display available filters on people",
33
33
  " -input-filters to display available filters on input data",
@@ -36,7 +36,9 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
36
36
  "TIPS:",
37
37
  " * You may specify the usecase to know its specific options by: -usecase_name --help -options",
38
38
  " * You may specify a refinement to show specific information only: --help -usecases tags"
39
- ].join("\n") unless hpf || hif || ho || huc
39
+ ].join("\n")
40
+
41
+ puts help_str unless hpf || hif || ho || huc
40
42
  exit
41
43
  end
42
44
 
@@ -151,6 +153,26 @@ ASSETS.cli.config do |cnf| # rubocop:disable Metrics/BlockLength
151
153
  session.config.dry_run!
152
154
  end
153
155
 
156
+ desc = "It specifies the type of batch to be used (default: ':batch')"
157
+ options_set.add("-batch-mode", desc) do |options, session|
158
+ mode_in = SCR.get_arg("-batch-mode", with_param: true)
159
+ mode_str = mode_in.to_s.downcase
160
+ mode_sym = %i[batch job].find do |md|
161
+ next true if md.to_s == mode_str
162
+
163
+ md.to_s == mode_str.gsub(':', '')
164
+ end
165
+
166
+ unless mode_sym
167
+ session.log(:warn) {
168
+ "Unknown job_mode: #{mode_in}. Switching to default: ':batch'"
169
+ }
170
+ mode_sym = :batch
171
+ end
172
+
173
+ options.deep_merge!(workflow: {batch: {mode: mode_sym}})
174
+ end
175
+
154
176
  desc = "Runs runs post_launch cases even if in dry-run"
155
177
  options_set.add("-run-postlaunch", desc) do |options, session|
156
178
  options.deep_merge!(post_launch: {run: true})
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = '3.0.6'.freeze
2
+ VERSION = '3.0.8'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.6
4
+ version: 3.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-26 00:00:00.000000000 Z
11
+ date: 2024-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -726,6 +726,7 @@ files:
726
726
  - lib/eco/api/usecases/graphql/helpers.rb
727
727
  - lib/eco/api/usecases/graphql/helpers/base.rb
728
728
  - lib/eco/api/usecases/graphql/helpers/base/case_env.rb
729
+ - lib/eco/api/usecases/graphql/helpers/base/error_handling.rb
729
730
  - lib/eco/api/usecases/graphql/helpers/base/graphql_env.rb
730
731
  - lib/eco/api/usecases/graphql/helpers/location.rb
731
732
  - lib/eco/api/usecases/graphql/helpers/location/base.rb
@@ -921,7 +922,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
921
922
  - !ruby/object:Gem::Version
922
923
  version: '0'
923
924
  requirements: []
924
- rubygems_version: 3.5.6
925
+ rubygems_version: 3.5.18
925
926
  signing_key:
926
927
  specification_version: 4
927
928
  summary: eco-helpers to manage people api cases