vg-service_object 0.5.0 → 0.6.0

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: 1f0eeb66b9fb55a001812685c7c4c4086cc0f25b563d566855dc24ba8dd5927e
4
- data.tar.gz: 3931e0add437744b3f5337527db3cf2ba6c57509e7fb70184031e4d6644c0d31
3
+ metadata.gz: 333357254e8d4007eecc70d2a82a40a6319652b2f642443eb8b974429b385275
4
+ data.tar.gz: e66cd3f53fe5e73550f7f3969ab78902e8f84249293955bc5702e11808041785
5
5
  SHA512:
6
- metadata.gz: 7efebdb2fd03cea0869dbe920d1f26b3ebdc5f2a8cd645fcb43d11c89f6147bcdf4f2ffb1a454d02f9f30ad866b8bf3a2e3d6a493773524a39f8d9e42e163390
7
- data.tar.gz: 74adc53e8c0dcc70a3fb713f97f9cf32b828ebba9a87cc774695bc26e2c3e34e9fae7ec5e37112fbe7b21070ad8cd7ce550f21e2e9ddc6099a9d3aa44e85d090
6
+ metadata.gz: ec889f277f4ffe74f2ea00f74d22158ce173047172e16850e9b5131a20c91d18b468949f43b4325e46d4cd2ae22a402c868fccb404bc2d78cdcbb7cb4f3a08cd
7
+ data.tar.gz: 64cf84f5785e6d9d65c92aa2a0c70740e14a16448da4b097699c9d7da86bbb4361b57d4535cca39e0f144e26bd00b7d126f62b05fc03d91fb7409500248e0e20
@@ -1,5 +1,5 @@
1
1
  module VG
2
2
  module ServiceObject
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -3,41 +3,43 @@
3
3
  module VG
4
4
  module ServiceObject
5
5
 
6
- module ClassSingletonMethods
6
+ module CommonSingletonMethods
7
7
  def call(...)
8
8
  callable.call(...)
9
9
  end
10
10
 
11
+ def as_method(name = nil)
12
+ ::VG::SO::GenerateIncludableModule.call(self.name, as: name)
13
+ end
14
+
15
+ alias_method :as_so, :as_method
16
+ end
17
+
18
+ module ClassSingletonMethods
19
+
11
20
  def callable
12
21
  self.new
13
22
  end
14
23
 
15
- def as_so(method_name = nil)
16
- ::VG::SO::GenerateIncludableModule.call(self.name, as: method_name)
17
- end
18
24
  end
19
25
 
20
26
  module ModuleSingletonMethods
21
- def call(...)
22
- callable.call(...)
23
- end
24
-
27
+
25
28
  def callable
26
29
  self::Action.new
27
30
  end
28
31
 
29
- def as_so(method_name = nil)
30
- ::VG::SO::GenerateIncludableModule.call(self.name, as: method_name)
31
- end
32
32
  end
33
33
 
34
34
  def self.included(so)
35
- methods = so.is_a?(Class) ? ClassSingletonMethods : ModuleSingletonMethods
36
- return if so.singleton_class.included_modules.include?(methods)
37
- so.extend methods
35
+ so.singleton_class.included_modules.tap do |included|
36
+ [CommonSingletonMethods, so.is_a?(Class) ? ClassSingletonMethods : ModuleSingletonMethods].each do |methods|
37
+ so.extend methods unless included.include?(methods)
38
+ end
39
+ end
38
40
 
39
41
  so.singleton_class.instance_eval do
40
- define_method(:included) { |_base| raise "Can't be included. Use #as_so method instead" }
42
+ define_method(:included) { |_base| raise "Can't be included. Use #as_method method instead" }
41
43
  end if so.instance_of?(Module)
42
44
  end
43
45
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vg-service_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Gorodulin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
11
+ date: 2021-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec