marty 4.0.0.rc2 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +1 -0
  4. data/.rubocop_todo.yml +3 -16
  5. data/.ssh-docker/.keep +0 -0
  6. data/Dockerfile.dummy +3 -0
  7. data/Gemfile +19 -15
  8. data/app/components/marty/base_rule_view.rb +104 -10
  9. data/app/components/marty/base_rule_view/client/base_rule_view.js +24 -0
  10. data/app/components/marty/data_grid_user_view.rb +39 -0
  11. data/app/components/marty/data_grid_view.rb +68 -18
  12. data/app/components/marty/extras/layout.rb +1 -1
  13. data/app/components/marty/grid.rb +1 -1
  14. data/app/components/marty/grid/client/grid.js +29 -13
  15. data/app/components/marty/import_view.rb +3 -3
  16. data/app/components/marty/main_auth_app.rb +11 -1
  17. data/app/components/marty/report_form.rb +6 -6
  18. data/app/components/marty/script_form.rb +5 -5
  19. data/app/components/marty/script_tester.rb +2 -2
  20. data/app/components/marty/user_view.rb +3 -9
  21. data/app/models/marty/base_rule.rb +92 -32
  22. data/app/models/marty/data_grid.rb +92 -22
  23. data/app/models/marty/event.rb +2 -2
  24. data/app/models/marty/promise.rb +4 -4
  25. data/app/models/marty/role_type.rb +14 -1
  26. data/app/services/marty/data_grid_view/save_grid.rb +2 -2
  27. data/app/services/marty/promises/delorean/create.rb +2 -2
  28. data/app/services/marty/promises/ruby/create.rb +2 -2
  29. data/config/locales/en.yml +11 -2
  30. data/db/migrate/108_add_data_grid_perms.rb +16 -0
  31. data/db/migrate/508_add_not_to_data_grids_tables.rb +18 -0
  32. data/db/migrate/509_update_dg_plpgsql_v1_fns.rb +13 -0
  33. data/db/sql/query_grid_dir_v1.sql +16 -2
  34. data/docker-compose.dummy.yml +1 -0
  35. data/lib/marty/content_handler.rb +2 -2
  36. data/lib/marty/data_change.rb +1 -1
  37. data/lib/marty/data_conversion.rb +3 -4
  38. data/lib/marty/data_importer.rb +4 -4
  39. data/lib/marty/mcfly_model.rb +7 -10
  40. data/lib/marty/migrations.rb +1 -1
  41. data/lib/marty/monkey.rb +2 -2
  42. data/lib/marty/promise_job.rb +5 -5
  43. data/lib/marty/promise_proxy.rb +2 -2
  44. data/lib/marty/promise_ruby_job.rb +4 -4
  45. data/lib/marty/version.rb +1 -1
  46. data/make-app.mk +1 -1
  47. data/marty.gemspec +13 -18
  48. data/other/marty/diagnostic/aws/ec2_instance.rb +17 -2
  49. data/other/marty/diagnostic/aws/error.rb +8 -0
  50. data/other/marty/diagnostic/database.rb +2 -2
  51. data/other/marty/diagnostic/delayed_job_version.rb +0 -1
  52. data/spec/dummy/app/components/gemini/my_rule_view.rb +32 -6
  53. data/spec/dummy/app/models/gemini/fannie_bup.rb +13 -20
  54. data/spec/dummy/app/models/gemini/my_rule.rb +4 -0
  55. data/spec/dummy/app/models/gemini/xyz_rule.rb +3 -1
  56. data/spec/dummy/config/application.rb +1 -0
  57. data/spec/dummy/config/initializers/secret_token.rb +1 -1
  58. data/spec/dummy/db/migrate/20190702115241_add_simple_guards_options_to_rules.rb +37 -0
  59. data/spec/features/data_grid_spec.rb +109 -47
  60. data/spec/features/reporting_spec.rb +4 -4
  61. data/spec/features/rule_spec.rb +62 -31
  62. data/spec/features/scripting_spec.rb +3 -3
  63. data/spec/features/user_view_spec.rb +17 -8
  64. data/spec/fixtures/csv/rule/MyRule.csv +4 -1
  65. data/spec/lib/data_importer_spec.rb +8 -8
  66. data/spec/lib/mcfly_model_spec.rb +6 -6
  67. data/spec/models/data_grid_spec.rb +139 -7
  68. data/spec/models/rule_spec.rb +116 -9
  69. data/spec/spec_helper.rb +2 -2
  70. data/spec/support/netzke.rb +4 -3
  71. metadata +55 -54
  72. data/Gemfile.lock +0 -289
@@ -11,9 +11,11 @@ module Marty::RuleSpec
11
11
  'grid_sum', 'c1', 'sr2']
12
12
  @ruleopts_xyz = ['bvlength', 'bv']
13
13
  end
14
+
14
15
  after(:all) do
15
16
  restore_clean_db(@save_file)
16
17
  end
18
+
17
19
  before(:each) do
18
20
  dt = DateTime.parse('2017-1-1')
19
21
  p = File.expand_path('../../fixtures/csv/rule', __FILE__)
@@ -23,6 +25,7 @@ module Marty::RuleSpec
23
25
  end
24
26
  Marty::Tag.do_create('2017-01-01', 'tag')
25
27
  end
28
+
26
29
  context 'validation' do
27
30
  subject do
28
31
  guards = (@g_array ? { 'g_array' => @g_array } : {}) +
@@ -37,6 +40,7 @@ module Marty::RuleSpec
37
40
  start_dt: @start_dt || '2013-1-1',
38
41
  end_dt: @end_dt,
39
42
  simple_guards: guards,
43
+ simple_guards_options: @simple_guards_options || {},
40
44
  computed_guards: @computed_guards || {},
41
45
  grids: @grids || {},
42
46
  results: @results || {}
@@ -121,18 +125,85 @@ module Marty::RuleSpec
121
125
  exp = /Grids - Bad grid name 'xyz' for 'grid1'/
122
126
  expect { subject }.to raise_error(exp)
123
127
  end
128
+
129
+ describe 'simple_guards_options' do
130
+ before do
131
+ @rule_type = 'SimpleRule'
132
+ end
133
+
134
+ let(:simple_guards_options) do
135
+ {
136
+ 'g_array' => { 'not' => true },
137
+ 'g_string' => { 'not' => true },
138
+ 'g_range' => { 'not' => true },
139
+ 'g_integer' => { 'not' => true },
140
+ 'g_bool' => { 'not' => true }
141
+ }
142
+ end
143
+
144
+ it 'detects wrong simple guards options value' do
145
+ @simple_guards_options = simple_guards_options.merge(
146
+ 'g_array' => { 'not' => 'wrong_type' }
147
+ )
148
+
149
+ exp = Regexp.new(
150
+ "Error in rule 'testrule' 'simple_guard_options' ->"\
151
+ " 'g_array' -> 'not' field must be a boolean"
152
+ )
153
+
154
+ expect { subject }.to raise_error(exp)
155
+ end
156
+
157
+ it 'detects wrong simple guards options field' do
158
+ @simple_guards_options = {
159
+ 'g_integer_wrong' => { 'not' => true }
160
+ }
161
+
162
+ exp = Regexp.new(
163
+ "Error in rule 'testrule' 'simple_guard_options' -> "\
164
+ "'g_integer_wrong' -> 'not'.Guard 'g_integer_wrong' doesn't exist."
165
+ )
166
+
167
+ expect { subject }.to raise_error(exp)
168
+ end
169
+
170
+ it 'detects wrong simple guards options field2' do
171
+ @simple_guards_options = {
172
+ 'g_nullbool' => { 'not' => true }
173
+ }
174
+
175
+ exp = Regexp.new(
176
+ "Error in rule 'testrule' 'simple_guard_options' ->"\
177
+ " 'g_nullbool' -> 'not'. True value is not allowed"
178
+ )
179
+ expect { subject }.to raise_error(exp)
180
+ end
181
+
182
+ it 'saves' do
183
+ @simple_guards_options = simple_guards_options
184
+ expect { subject }.to_not raise_error
185
+ end
186
+ end
187
+
124
188
  it 'sets guard defaults correctly' do
125
189
  vals = Gemini::MyRule.all.map do |r|
126
190
  [r.name, r.simple_guards['g_has_default']]
127
191
  end
128
- expect(vals.sort).to eq([['Rule1', 'different'],
129
- ['Rule2', 'string default'],
130
- ['Rule2a', 'string default'],
131
- ['Rule2b', 'string default'],
132
- ['Rule2c', 'string default'],
133
- ['Rule3', 'string default'],
134
- ['Rule4', 'string default'],
135
- ['Rule5', 'foo']].sort)
192
+ expect(vals.sort).to eq(
193
+ [
194
+ ['NotRule1', 'foo'],
195
+ ['NotRule2', 'foo'],
196
+ ['NotRule3', 'foo'],
197
+ ['Rule1', 'different'],
198
+ ['Rule2', 'string default'],
199
+ ['Rule2a', 'string default'],
200
+ ['Rule2b', 'string default'],
201
+ ['Rule2c', 'string default'],
202
+ ['Rule3', 'string default'],
203
+ ['Rule4', 'string default'],
204
+ ['Rule5', 'foo']
205
+ ].sort
206
+ )
136
207
  end
137
208
  end
138
209
  context 'validation (xyz type)' do
@@ -176,6 +247,7 @@ module Marty::RuleSpec
176
247
  expect(rule.compute_xyz('infinity', true)).to be false
177
248
  expect(rule.compute_xyz('infinity', false)).to be true
178
249
  end
250
+
179
251
  it 'no error' do
180
252
  @rule_type = 'XRule'
181
253
  @results = { 'x' => '1' }
@@ -250,7 +322,7 @@ module Marty::RuleSpec
250
322
  expect(lookup.first.name).to eq('Rule2c')
251
323
  lookup = Gemini::MyRule.get_matches('infinity',
252
324
  { 'rule_type' => 'SimpleRule' }, {})
253
- expect(lookup.to_a.count).to eq(5)
325
+ expect(lookup.to_a.count).to eq(8)
254
326
  lookup = Gemini::MyRule.get_matches('infinity',
255
327
  { 'rule_dt' => '2017-3-1 02:00:00' },
256
328
  {})
@@ -273,8 +345,43 @@ module Marty::RuleSpec
273
345
  'g_nbool_def' => true)
274
346
  expect(lookup.to_a.count).to eq(1)
275
347
  expect(lookup.pluck(:name).first).to eq('Rule1')
348
+
349
+ #####
350
+ # NOT lookups
351
+ #####
352
+ lookup = Gemini::MyRule.get_matches('infinity', {},
353
+ 'g_bool_def' => true,
354
+ 'g_integer' => 3757)
355
+ expect(lookup.to_a.count).to eq(2)
356
+ expect(lookup.pluck(:name).sort).to eq(['NotRule1', 'Rule5'])
357
+
358
+ lookup = Gemini::MyRule.get_matches('infinity', {},
359
+ 'g_bool_def' => true,
360
+ 'g_integer' => 100500)
361
+ expect(lookup.to_a.count).to eq(2)
362
+ expect(lookup.pluck(:name).sort).to eq(['NotRule2', 'NotRule3'])
363
+
364
+ lookup = Gemini::MyRule.get_matches('infinity', {},
365
+ 'g_string' => 'wrong',
366
+ 'g_range' => 20
367
+ )
368
+ expect(lookup.to_a.count).to eq(2)
369
+ expect(lookup.pluck(:name).sort).to eq(['NotRule1', 'NotRule2'])
370
+
371
+ lookup = Gemini::MyRule.get_matches('infinity', {},
372
+ 'g_string' => 'wrong',
373
+ )
374
+ expect(lookup.to_a.count).to eq(3)
375
+ expect(lookup.pluck(:name).sort).to eq(['NotRule1', 'NotRule2', 'NotRule3'])
376
+
377
+ lookup = Gemini::MyRule.get_matches('infinity', {},
378
+ 'g_range' => 250,
379
+ 'g_string' => 'wrong')
380
+ expect(lookup.to_a.count).to eq(1)
381
+ expect(lookup.pluck(:name).sort).to eq(['NotRule3'])
276
382
  end
277
383
  end
384
+
278
385
  context 'rule compute' do
279
386
  let(:complex) do
280
387
  Gemini::MyRule.get_matches('infinity',
@@ -11,8 +11,8 @@ require "#{support}/shared_connection"
11
11
 
12
12
  Dummy::Application.initialize! unless Dummy::Application.initialized?
13
13
 
14
- ActiveRecord::Migrator.migrate File.expand_path('../../db/migrate/', __FILE__)
15
- ActiveRecord::Migrator.migrate File.expand_path('../dummy/db/migrate/', __FILE__)
14
+ ActiveRecord::Migration.migrate File.expand_path('../../db/migrate/', __FILE__)
15
+ ActiveRecord::Migration.migrate File.expand_path('../dummy/db/migrate/', __FILE__)
16
16
 
17
17
  require 'rspec/retry'
18
18
 
@@ -18,7 +18,7 @@ module Marty; module RSpec; module Netzke
18
18
  end
19
19
 
20
20
  def log_in(username, password)
21
- wait_for_ready(10)
21
+ wait_for_ready(25)
22
22
 
23
23
  begin
24
24
  if first("a[data-qtip='Current user']")
@@ -52,8 +52,9 @@ module Marty; module RSpec; module Netzke
52
52
  def press button_name, index_of = 0
53
53
  wait_for_element do
54
54
  begin
55
- cmp = first("a[data-qtip='#{button_name}']")
56
- cmp ||= first(:xpath, './/a', text: button_name.to_s)
55
+ cmp = first("a[data-qtip='#{button_name}']") rescue nil
56
+ cmp ||= all(:xpath, './/a', text: button_name.to_s).
57
+ detect { |c| c.text == button_name.to_s } rescue nil
57
58
  cmp ||= find(:btn, button_name, match: :first)
58
59
  cmp.click
59
60
  true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc2
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,80 +14,80 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-06-25 00:00:00.000000000 Z
17
+ date: 2019-07-26 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
- name: pg
20
+ name: aws-sigv4
21
21
  requirement: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '0.21'
25
+ version: '0'
26
26
  type: :runtime
27
27
  prerelease: false
28
28
  version_requirements: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '0.21'
32
+ version: '0'
33
33
  - !ruby/object:Gem::Dependency
34
- name: netzke
34
+ name: axlsx
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 6.5.0.0
39
+ version: 3.0.0pre
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: 6.5.0.0
46
+ version: 3.0.0pre
47
47
  - !ruby/object:Gem::Dependency
48
- name: axlsx
48
+ name: coderay
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 3.0.0pre
53
+ version: '0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 3.0.0pre
60
+ version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: delorean_lang
62
+ name: daemons
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '1.0'
67
+ version: '0'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '1.0'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: mcfly
76
+ name: delayed_cron_job
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: 0.0.20
81
+ version: '0'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: 0.0.20
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: coderay
90
+ name: delayed_job_active_record
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
@@ -101,7 +101,7 @@ dependencies:
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: json-schema
104
+ name: delorean_lang
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
@@ -115,21 +115,21 @@ dependencies:
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
- name: net-ldap
118
+ name: json-schema
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: 0.16.1
123
+ version: '0'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - "~>"
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 0.16.1
130
+ version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
- name: rubyzip
132
+ name: mcfly
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - ">="
@@ -143,7 +143,7 @@ dependencies:
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  - !ruby/object:Gem::Dependency
146
- name: sqlite3
146
+ name: net-ldap
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ">="
@@ -157,41 +157,35 @@ dependencies:
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  - !ruby/object:Gem::Dependency
160
- name: aws-sigv4
160
+ name: netzke
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '1.0'
166
163
  - - ">="
167
164
  - !ruby/object:Gem::Version
168
- version: 1.0.2
165
+ version: '0'
169
166
  type: :runtime
170
167
  prerelease: false
171
168
  version_requirements: !ruby/object:Gem::Requirement
172
169
  requirements:
173
- - - "~>"
174
- - !ruby/object:Gem::Version
175
- version: '1.0'
176
170
  - - ">="
177
171
  - !ruby/object:Gem::Version
178
- version: 1.0.2
172
+ version: '0'
179
173
  - !ruby/object:Gem::Dependency
180
- name: daemons
174
+ name: pg
181
175
  requirement: !ruby/object:Gem::Requirement
182
176
  requirements:
183
- - - "~>"
177
+ - - ">="
184
178
  - !ruby/object:Gem::Version
185
- version: 1.3.1
179
+ version: '0'
186
180
  type: :runtime
187
181
  prerelease: false
188
182
  version_requirements: !ruby/object:Gem::Requirement
189
183
  requirements:
190
- - - "~>"
184
+ - - ">="
191
185
  - !ruby/object:Gem::Version
192
- version: 1.3.1
186
+ version: '0'
193
187
  - !ruby/object:Gem::Dependency
194
- name: delayed_cron_job
188
+ name: rubyzip
195
189
  requirement: !ruby/object:Gem::Requirement
196
190
  requirements:
197
191
  - - ">="
@@ -205,7 +199,7 @@ dependencies:
205
199
  - !ruby/object:Gem::Version
206
200
  version: '0'
207
201
  - !ruby/object:Gem::Dependency
208
- name: delayed_job_active_record
202
+ name: zip-zip
209
203
  requirement: !ruby/object:Gem::Requirement
210
204
  requirements:
211
205
  - - ">="
@@ -230,10 +224,10 @@ files:
230
224
  - ".rspec"
231
225
  - ".rubocop.yml"
232
226
  - ".rubocop_todo.yml"
227
+ - ".ssh-docker/.keep"
233
228
  - ".travis.yml"
234
229
  - Dockerfile.dummy
235
230
  - Gemfile
236
- - Gemfile.lock
237
231
  - INDEPENDENCE_ISSUES.md
238
232
  - MIT-LICENSE
239
233
  - Makefile
@@ -255,7 +249,9 @@ files:
255
249
  - app/components/marty/auth_app.rb
256
250
  - app/components/marty/auth_app/client/auth_app.js
257
251
  - app/components/marty/base_rule_view.rb
252
+ - app/components/marty/base_rule_view/client/base_rule_view.js
258
253
  - app/components/marty/config_view.rb
254
+ - app/components/marty/data_grid_user_view.rb
259
255
  - app/components/marty/data_grid_view.rb
260
256
  - app/components/marty/data_grid_view/client/data_grid_edit.js
261
257
  - app/components/marty/delorean_rule_view.rb
@@ -394,6 +390,7 @@ files:
394
390
  - db/migrate/105_create_marty_grid_index_booleans.rb
395
391
  - db/migrate/106_make_grid_indexes_nullable.rb
396
392
  - db/migrate/107_add_data_grid_constraint.rb
393
+ - db/migrate/108_add_data_grid_perms.rb
397
394
  - db/migrate/200_create_marty_event_operation_enum.rb
398
395
  - db/migrate/201_create_marty_events.rb
399
396
  - db/migrate/202_add_completion_status_to_event.rb
@@ -412,6 +409,8 @@ files:
412
409
  - db/migrate/505_add_cron_to_delayed_jobs.rb
413
410
  - db/migrate/506_create_marty_delayed_job_schedules.rb
414
411
  - db/migrate/507_migrate_marty_roles_to_enum.rb
412
+ - db/migrate/508_add_not_to_data_grids_tables.rb
413
+ - db/migrate/509_update_dg_plpgsql_v1_fns.rb
415
414
  - db/seeds.rb
416
415
  - db/sql/lookup_grid_distinct_v1.sql
417
416
  - db/sql/query_grid_dir_v1.sql
@@ -462,6 +461,7 @@ files:
462
461
  - marty.gemspec
463
462
  - other/marty/api/base.rb
464
463
  - other/marty/diagnostic/aws/ec2_instance.rb
464
+ - other/marty/diagnostic/aws/error.rb
465
465
  - other/marty/diagnostic/base.rb
466
466
  - other/marty/diagnostic/collection.rb
467
467
  - other/marty/diagnostic/connections.rb
@@ -560,6 +560,7 @@ files:
560
560
  - spec/dummy/db/migrate/20171221095312_create_gemini_my_rules.rb
561
561
  - spec/dummy/db/migrate/20171221095359_create_gemini_xyz_rules.rb
562
562
  - spec/dummy/db/migrate/20171222150100_add_rule_indices.rb
563
+ - spec/dummy/db/migrate/20190702115241_add_simple_guards_options_to_rules.rb
563
564
  - spec/dummy/db/seeds.rb
564
565
  - spec/dummy/delorean/base_code.dl
565
566
  - spec/dummy/delorean/blame_report.dl
@@ -1688,12 +1689,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
1688
1689
  version: '0'
1689
1690
  required_rubygems_version: !ruby/object:Gem::Requirement
1690
1691
  requirements:
1691
- - - ">"
1692
+ - - ">="
1692
1693
  - !ruby/object:Gem::Version
1693
- version: 1.3.1
1694
+ version: '0'
1694
1695
  requirements: []
1695
1696
  rubyforge_project:
1696
- rubygems_version: 2.7.8
1697
+ rubygems_version: 2.6.14
1697
1698
  signing_key:
1698
1699
  specification_version: 4
1699
1700
  summary: A framework for working with versioned data