lev 9.0.1 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7d1863a4a2253c9d582fabc34ec0b3347bfac6ab
4
- data.tar.gz: dc9eadf03105c2863fc432dae3096431bfcef8b1
2
+ SHA256:
3
+ metadata.gz: fb4ccab91175edafaeff83e3bab8ab84e5a650ebc88b5000bf848ff1ad171d49
4
+ data.tar.gz: ce48c8cc00ed7edfa6076b5ba91ddbf11933f0a4b9f02e65dd6548ab69fc5b6c
5
5
  SHA512:
6
- metadata.gz: 92f85896091e416faa19e243d55c3035f933b3cccf0c15030bac7d883521dc04afaf61ac4d1f5e00bfea63974060628bedeba70b01f3f3df07084d830ef6e716
7
- data.tar.gz: 0fb631e0ad4d3a0f9930f60abd9a258a76fea71a6389566be0f7baab05bc5131388d7d9e280a3e032e5e5de9542fdb9d43a28dac2ab69b95841d63df882c17e6
6
+ metadata.gz: 9dc7506db7fe12a5122596ea9f6cdf6682bc2f601f6b89d6dc26c49c1733e53a3d74ff0679430877deaf94c1009ab22a2bde64432cd8c946a5790237177c9f25
7
+ data.tar.gz: 53125d7cb41f17b27539b45802d4ec1dff132434c4d4dcdddc0294128c8a973a02f2bea2df8a852d986b5ecb4e46462af3d552198846a8c2f8caf10ab255d400
@@ -13,7 +13,7 @@ module Lev
13
13
  end
14
14
 
15
15
  def perform_later(*args, &block)
16
- Lev::ActiveJob::Base.new.perform_later(routine_class, options, *args, &block)
16
+ routine_class.job_class.new.perform_later(routine_class, options, *args, &block)
17
17
  end
18
18
  end
19
19
  end
@@ -83,6 +83,14 @@ module Lev
83
83
  @messages = ActiveSupport::OrderedHash.new
84
84
  end
85
85
 
86
+ # copy & details are needed to match `ActiveModel::Errors` interface
87
+ def copy!(other)
88
+ initialize_dup(other)
89
+ end
90
+ def details
91
+ {}
92
+ end
93
+
86
94
  def initialize_dup(other)
87
95
  @types = other.types.dup
88
96
  @messages = other.messages.dup
@@ -1,7 +1,9 @@
1
1
  module Lev
2
2
  class FormBuilder < ActionView::Helpers::FormBuilder
3
3
 
4
- (field_helpers - %w(label check_box radio_button fields_for file_field)).each do |selector|
4
+ (
5
+ field_helpers.map(&:to_s) - %w(label check_box radio_button fields_for file_field)
6
+ ).each do |selector|
5
7
  class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
6
8
  def #{selector}(method, options = {}) # def text_field(method, options = {})
7
9
  set_value_if_available(method, options) # ... verbatim ...
@@ -26,11 +28,11 @@ module Lev
26
28
  def fields_for(record_name, record_object = nil, fields_options = {}, &block)
27
29
  raise "Didn't put fields_for into LevitateFormBuilder yet"
28
30
  end
29
-
31
+
30
32
  protected
31
33
 
32
34
  def get_form_params_entry(name)
33
- @options[:params].present? ?
35
+ @options[:params].present? ?
34
36
  (@options[:params][@object_name].present? ?
35
37
  @options[:params][@object_name][name] :
36
38
  nil) :
@@ -60,4 +62,4 @@ def lev_form_for(record_or_name_or_array, *args, &proc)
60
62
  options[:params] = params
61
63
  options[:errors] = handler_errors # @errors || (@handler_outcome ? @handler_outcome.errors : [])
62
64
  form_for(record_or_name_or_array, *(args << options.merge(:builder => Lev::FormBuilder)), &proc)
63
- end
65
+ end
@@ -8,6 +8,7 @@ class Object
8
8
  options[:transaction] ||= Lev::TransactionIsolation.mysql_default.symbol
9
9
  @transaction_isolation = Lev::TransactionIsolation.new(options[:transaction])
10
10
 
11
+ @job_class = options[:job_class]
11
12
  @active_job_enqueue_options = options[:active_job_enqueue_options]
12
13
 
13
14
  @raise_fatal_errors = options[:raise_fatal_errors]
@@ -214,23 +214,26 @@ module Lev
214
214
  Lev::ActiveJob::ConfiguredJob.new(self, options)
215
215
  end
216
216
 
217
- def perform_later(*args, &block)
218
- # Delegate to a subclass of Lev::Routine::ActiveJob::Base
219
- Lev::ActiveJob::Base.new.perform_later(self, active_job_enqueue_options, *args, &block)
217
+ def job_class
218
+ @job_class || Lev::ActiveJob::Base
220
219
  end
221
220
 
222
221
  def active_job_enqueue_options
223
222
  @active_job_enqueue_options || { queue: :default }
224
223
  end
225
224
 
225
+ def perform_later(*args, &block)
226
+ # Delegate to a subclass of Lev::Routine::ActiveJob::Base
227
+ job_class.new.perform_later(self, active_job_enqueue_options, *args, &block)
228
+ end
229
+
226
230
  # Called at a routine's class level to foretell which other routines will
227
231
  # be used when this routine executes. Helpful for figuring out ahead of
228
232
  # time what kind of transaction isolation level should be used.
229
233
  def uses_routine(routine_class, options={})
230
234
  symbol = options[:as] || class_to_symbol(routine_class)
231
235
 
232
- raise Lev.configuration.illegal_argument_error, "Routine #{routine_class} has already been registered" \
233
- if nested_routines[symbol]
236
+ warn("Routine #{routine_class} has already been registered") if nested_routines[symbol]
234
237
 
235
238
  nested_routines[symbol] = {
236
239
  routine_class: routine_class,
@@ -298,12 +301,11 @@ module Lev
298
301
  block.call
299
302
  end
300
303
  rescue Exception => e
301
- # Let exceptions escape but make sure to note the error in the status
302
- # if not already done
304
+ # Let exceptions escape but make sure to note the error in the status if not already done
303
305
  if !e.is_a?(Lev::FatalError)
304
306
  error = Error.new(code: :exception,
305
307
  message: e.message,
306
- data: e.backtrace.first)
308
+ data: e.backtrace&.first)
307
309
  status.add_error(error)
308
310
  status.failed!
309
311
  end
@@ -378,8 +380,7 @@ module Lev
378
380
  input_mapper = new_term_mapper(options[:translations][:inputs]) ||
379
381
  new_term_mapper({ scope: symbol })
380
382
 
381
- output_mapper = new_term_mapper(options[:translations][:outputs]) ||
382
- new_term_mapper({ scope: symbol })
383
+ output_mapper = new_term_mapper(options[:translations][:outputs])
383
384
 
384
385
  #
385
386
  # Set up the ignored errors in the routine instance
@@ -398,7 +399,7 @@ module Lev
398
399
 
399
400
  run_result.outputs.transfer_to(outputs) do |name|
400
401
  output_mapper.map(name)
401
- end
402
+ end unless output_mapper.nil?
402
403
 
403
404
  options[:errors_are_fatal] = true if !options.has_key?(:errors_are_fatal)
404
405
  transfer_errors_from(run_result.errors, input_mapper, options[:errors_are_fatal])
@@ -459,8 +460,9 @@ module Lev
459
460
  end
460
461
 
461
462
  def result
462
- @result ||= Result.new(Outputs.new,
463
- Errors.new(status, topmost_runner.class.raise_fatal_errors?))
463
+ @result ||= Result.new(
464
+ Outputs.new, Errors.new(status, topmost_runner.class.raise_fatal_errors?)
465
+ )
464
466
  end
465
467
 
466
468
  def reset_result!
@@ -1,3 +1,3 @@
1
1
  module Lev
2
- VERSION = "9.0.1"
2
+ VERSION = '10.1.0'
3
3
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- RSpec.describe 'Better active model errors' do
4
-
3
+ RSpec.describe 'BetterActiveModelErrors' do
5
4
  class DummyModel
6
5
  def self.human_attribute_name(attr, default='')
7
6
  return attr.capitalize
@@ -22,4 +21,16 @@ RSpec.describe 'Better active model errors' do
22
21
  expect(errors.include?('crash')).to be true
23
22
  end
24
23
 
24
+ it 'duplicates when copy called' do
25
+ model = OpenStruct.new
26
+
27
+ error = Lev::BetterActiveModelErrors.new(model)
28
+ error.set(:code, 'error')
29
+ expect(error.get(:code)).to eq 'error'
30
+
31
+ other = Lev::BetterActiveModelErrors.new(model)
32
+ other.set(:code, 'warning')
33
+ error.copy!(other)
34
+ expect(error.get(:code)).to eq 'warning'
35
+ end
25
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe CreateSprocket do
4
-
3
+ RSpec.describe CreateSprocket do
4
+
5
5
  it "should transfer errors appropriately" do
6
6
  result = CreateSprocket.call(1,"42")
7
7
  errors = result.errors.collect { |error| error.translate }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Lev::Utilities do
3
+ RSpec.describe Lev::Utilities do
4
4
 
5
5
  it "should merge properly" do
6
6
  default_options = {
@@ -38,4 +38,4 @@ describe Lev::Utilities do
38
38
  expect(merged).to eq expected
39
39
  end
40
40
 
41
- end
41
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe DelegatingRoutine do
3
+ RSpec.describe DelegatingRoutine do
4
4
 
5
5
  it "should delegate" do
6
6
  result = DelegatingRoutine.call(1,8)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Lev::Outputs do
3
+ RSpec.describe Lev::Outputs do
4
4
 
5
5
  let(:outputs) { Lev::Outputs.new }
6
6
 
@@ -60,7 +60,7 @@ describe Lev::Outputs do
60
60
  :y
61
61
  end
62
62
 
63
- other_outputs.add(:y, 6)
63
+ other_outputs.add(:y, 6)
64
64
  expect(other_outputs.y).to eq [4,5,6]
65
65
  end
66
66
 
@@ -72,9 +72,9 @@ describe Lev::Outputs do
72
72
 
73
73
  outputs.transfer_to(other_outputs)
74
74
 
75
- other_outputs.add(:y, 6)
75
+ other_outputs.add(:y, 6)
76
76
  expect(other_outputs.x).to eq [4,5]
77
77
  expect(other_outputs.y).to eq 6
78
78
  end
79
79
 
80
- end
80
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ParamifyHandlerA do
3
+ RSpec.describe ParamifyHandlerA do
4
4
  it 'should error out on badly formatted params' do
5
5
  result = ParamifyHandlerA.handle(params: {terms: {type: 'blah'}})
6
6
  errors = result.errors.collect { |error| error.translate }
@@ -8,7 +8,7 @@ describe ParamifyHandlerA do
8
8
  end
9
9
  end
10
10
 
11
- describe ParamifyHandlerB do
11
+ RSpec.describe ParamifyHandlerB do
12
12
  it 'should error out on badly formatted ungrouped params' do
13
13
  result = ParamifyHandlerB.handle(params: {type: 'blah'})
14
14
  errors = result.errors.collect { |error| error.translate }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Lev::Routine do
3
+ RSpec.describe Lev::Routine do
4
4
 
5
5
  before do
6
6
  stub_const 'RaiseRuntimeError', Class.new
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe SprocketHandler do
3
+ RSpec.describe SprocketHandler do
4
4
  it 'should return fatal error messages' do
5
5
  allow_any_instance_of(SprocketHandler).to(
6
6
  receive(:params).and_return({
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper.rb'
2
2
 
3
- describe Sprocket do
3
+ RSpec.describe Sprocket do
4
4
 
5
5
  it "should not be valid with bad inputs" do
6
6
  sprocket = Sprocket.new(integer_gt_2: 1, text_only_letters: 'abcd4')
@@ -8,4 +8,4 @@ describe Sprocket do
8
8
  expect(sprocket.errors.count).to eq 2
9
9
  end
10
10
 
11
- end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lev
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.1
4
+ version: 10.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Slavinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-14 00:00:00.000000000 Z
11
+ date: 2020-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -178,20 +178,6 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: byebug
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: jobba
197
183
  requirement: !ruby/object:Gem::Requirement
@@ -206,20 +192,6 @@ dependencies:
206
192
  - - ">="
207
193
  - !ruby/object:Gem::Version
208
194
  version: '1.5'
209
- - !ruby/object:Gem::Dependency
210
- name: rails
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
195
  description: Ride the rails but don't touch them.
224
196
  email:
225
197
  - jps@kindlinglabs.com
@@ -293,29 +265,28 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
265
  - !ruby/object:Gem::Version
294
266
  version: '0'
295
267
  requirements: []
296
- rubyforge_project:
297
- rubygems_version: 2.4.5.1
268
+ rubygems_version: 3.0.3
298
269
  signing_key:
299
270
  specification_version: 4
300
271
  summary: Ride the rails but don't touch them.
301
272
  test_files:
302
273
  - spec/active_job_routines_spec.rb
303
- - spec/better_active_model_errors_spec.rb
304
- - spec/create_sprocket_spec.rb
305
- - spec/deep_merge_spec.rb
306
- - spec/delegates_to_spec.rb
307
- - spec/outputs_spec.rb
308
274
  - spec/paramify_handler_spec.rb
309
- - spec/routine_spec.rb
310
275
  - spec/spec_helper.rb
311
- - spec/sprocket_handler_spec.rb
312
276
  - spec/sprocket_spec.rb
277
+ - spec/create_sprocket_spec.rb
278
+ - spec/outputs_spec.rb
279
+ - spec/deep_merge_spec.rb
280
+ - spec/sprocket_handler_spec.rb
313
281
  - spec/statused_routines_spec.rb
282
+ - spec/better_active_model_errors_spec.rb
283
+ - spec/routine_spec.rb
284
+ - spec/support/sprocket_handler.rb
314
285
  - spec/support/create_sprocket.rb
315
286
  - spec/support/delegated_routine.rb
316
- - spec/support/delegating_routine.rb
287
+ - spec/support/sprocket.rb
317
288
  - spec/support/paramify_handler_a.rb
318
289
  - spec/support/paramify_handler_b.rb
319
- - spec/support/sprocket.rb
320
- - spec/support/sprocket_handler.rb
290
+ - spec/support/delegating_routine.rb
321
291
  - spec/transaction_spec.rb
292
+ - spec/delegates_to_spec.rb