performify 0.4.1 → 0.4.2

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
2
  SHA1:
3
- metadata.gz: a683e8557fe63bce6b47dc99f35e9df354f1df02
4
- data.tar.gz: 6ccd6d959c82eddae847f73c531e1fc8bd8f8d89
3
+ metadata.gz: 367bfe01f77286f482805897593ecc737774a018
4
+ data.tar.gz: 2c3c2ea399f9ada30d3bea8816fea838e0808dde
5
5
  SHA512:
6
- metadata.gz: ab7e975a64c0877e3e7fccb9e1fff3669288621c92d84f2007b6e34c110e672f089ba771581726ffcfcb919909e86b9b480797e0808c396b37ace33b6f8a133e
7
- data.tar.gz: d911869f274a6e69d26f29ffd5998bad0ffe4bdbbf811f1837204768665f68d44b26b221e5d36c4fd4d7c10222997d80990d9fe3f89629e3b43e3d401fe1e417
6
+ metadata.gz: 3a2447ad50e473e7d49c49c94f633d0f269286a5aaa96e502d8e184491dc3281ac40cfd89037abd6904291f7a8e138c8e7df3aae4c6317fd854bcb92420f3be7
7
+ data.tar.gz: e850cd17689446b5ba68e58d91829b46896370a8976c83439d7a3596c07a60098af758d3659fe924bbfe274e8427a6b65936bdc63eb6acf4ef8875eb5a888558
@@ -7,17 +7,13 @@ module Performify
7
7
  extend Performify::Validation
8
8
 
9
9
  attr_reader :current_user
10
+ attr_reader :args
10
11
 
11
12
  def initialize(current_user = nil, **args)
12
13
  @current_user = current_user
14
+ @args = args
13
15
 
14
- define_singleton_method(:execute!) do |&block|
15
- return if defined?(@result)
16
- super(&block)
17
- end
18
-
19
- validate(args)
20
- define_singleton_methods(args)
16
+ prepare_instance
21
17
 
22
18
  fail!(with_callbacks: true) if errors?
23
19
  end
@@ -73,7 +69,17 @@ module Performify
73
69
  @result.blank?
74
70
  end
75
71
 
76
- private def define_singleton_methods(args)
72
+ private def prepare_instance
73
+ define_singleton_method(:execute!) do |&block|
74
+ return if defined?(@result)
75
+ super(&block)
76
+ end
77
+
78
+ validate
79
+ define_singleton_methods
80
+ end
81
+
82
+ private def define_singleton_methods
77
83
  param_names = schema ? schema.rules.keys : args.keys
78
84
  param_names.each do |param_name|
79
85
  define_singleton_method(param_name) { args[param_name] }
@@ -24,7 +24,7 @@ module Performify
24
24
  raise UnknownTypeOfCallbackError, "Type #{type_of_callback} is not allowed"
25
25
  end
26
26
  cbs = (@service_callbacks || {}).fetch(type_of_callback, [])
27
- cbs.each { |cb| instance.instance_eval(&cb) }
27
+ cbs.each { |cb| cb.is_a?(Proc) ? instance.instance_eval(&cb) : instance.send(cb) }
28
28
  nil
29
29
  end
30
30
 
@@ -19,7 +19,7 @@ module Performify
19
19
  self.class.schema
20
20
  end
21
21
 
22
- def validate(args)
22
+ def validate
23
23
  return args if schema.nil?
24
24
  result = schema.call(args)
25
25
  errors!(result.errors) unless result.success?
@@ -1,3 +1,3 @@
1
1
  module Performify
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: performify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Tsvetkov