vg-service_object 0.5.0 → 0.6.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
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