manufacturable 1.4.2 → 2.0.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 +4 -4
- data/lib/manufacturable/builder.rb +26 -15
- data/lib/manufacturable/factory.rb +4 -0
- data/lib/manufacturable/item.rb +13 -13
- data/lib/manufacturable/railtie.rb +15 -3
- data/lib/manufacturable/registrar.rb +2 -0
- data/lib/manufacturable/version.rb +1 -1
- data/lib/manufacturable.rb +11 -15
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6592918ec7c5048cac69e110ebd09e5845fc59ebc5153d4fd6f289f3613e9b05
|
4
|
+
data.tar.gz: 2ab88ebebdae5afbc65d1b1513a36a45a94ae5712b7fe94229d7430201719bfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cba737b5b3b0bceea6096f4cf9cd4e776fabb261432d20efa798f63cfa1d6fe58a0e221e17679dd13f14babafc7b974bcf91a05ad85ab3bee1dcb9d2d3f4bde6
|
7
|
+
data.tar.gz: 594665a88f75ffdc145dfaefe5e528247da47567e8ec6bc7cb650a4931396530c5a595f427a68bdfb3acce912890e31db95d8243ce8a45eaeb841d414d2a8d6b
|
@@ -2,16 +2,20 @@ require 'manufacturable/registrar'
|
|
2
2
|
|
3
3
|
module Manufacturable
|
4
4
|
class Builder
|
5
|
-
def self.build(*args, **kwargs)
|
6
|
-
self.new(*args, **kwargs).build
|
5
|
+
def self.build(*args, **kwargs, &block)
|
6
|
+
self.new(*args, **kwargs, &block).build
|
7
7
|
end
|
8
8
|
|
9
|
-
def self.build_one(*args, **kwargs)
|
10
|
-
self.new(*args, **kwargs).build_one
|
9
|
+
def self.build_one(*args, **kwargs, &block)
|
10
|
+
self.new(*args, **kwargs, &block).build_one
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.build_all(*args, **kwargs)
|
14
|
-
self.new(*args, **kwargs).build_all
|
13
|
+
def self.build_all(*args, **kwargs, &block)
|
14
|
+
self.new(*args, **kwargs, &block).build_all
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.builds?(*args, **kwargs, &block)
|
18
|
+
self.new(*args, **kwargs, &block).builds?
|
15
19
|
end
|
16
20
|
|
17
21
|
def build
|
@@ -26,12 +30,17 @@ module Manufacturable
|
|
26
30
|
instances
|
27
31
|
end
|
28
32
|
|
33
|
+
def builds?
|
34
|
+
Registrar.registered_keys(type).include?(key)
|
35
|
+
end
|
36
|
+
|
29
37
|
private
|
30
38
|
|
31
|
-
attr_reader :type, :key, :args, :kwargs
|
39
|
+
attr_reader :type, :key, :args, :kwargs, :block
|
32
40
|
|
33
|
-
def initialize(
|
34
|
-
@type, @key,
|
41
|
+
def initialize(*args, **kwargs, &block)
|
42
|
+
@type, @key, *@args = args
|
43
|
+
@kwargs, @block = kwargs, block
|
35
44
|
end
|
36
45
|
|
37
46
|
def return_first?
|
@@ -39,15 +48,17 @@ module Manufacturable
|
|
39
48
|
end
|
40
49
|
|
41
50
|
def instances
|
42
|
-
@instances ||= klasses.map
|
51
|
+
@instances ||= klasses.map do |klass|
|
52
|
+
klass.new(*args, **kwargs_with_key).tap { |instance| block&.call(instance) }
|
53
|
+
end
|
43
54
|
end
|
44
55
|
|
45
|
-
def
|
46
|
-
|
56
|
+
def last_instance
|
57
|
+
last_klass&.new(*args, **kwargs_with_key)&.tap { |instance| block&.call(instance) }
|
47
58
|
end
|
48
59
|
|
49
|
-
def
|
50
|
-
|
60
|
+
def klasses
|
61
|
+
Registrar.get(type, key).to_a
|
51
62
|
end
|
52
63
|
|
53
64
|
def kwargs_with_key
|
@@ -55,7 +66,7 @@ module Manufacturable
|
|
55
66
|
end
|
56
67
|
|
57
68
|
def last_klass
|
58
|
-
klasses.
|
69
|
+
klasses.last
|
59
70
|
end
|
60
71
|
end
|
61
72
|
end
|
data/lib/manufacturable/item.rb
CHANGED
@@ -2,19 +2,11 @@ require 'manufacturable/registrar'
|
|
2
2
|
|
3
3
|
module Manufacturable
|
4
4
|
module Item
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
instance.instance_variable_set(:@manufacturable_item_key, key)
|
11
|
-
instance
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
base.class_eval do
|
16
|
-
attr_reader :manufacturable_item_key
|
17
|
-
end
|
5
|
+
def new(*args, **kwargs, &block)
|
6
|
+
key = kwargs.delete(:manufacturable_item_key)
|
7
|
+
instance = kwargs.empty? ? super(*args, &block) : super
|
8
|
+
instance.instance_variable_set(:@manufacturable_item_key, key)
|
9
|
+
instance
|
18
10
|
end
|
19
11
|
|
20
12
|
def corresponds_to(key, type = self.superclass)
|
@@ -29,5 +21,13 @@ module Manufacturable
|
|
29
21
|
def default_manufacturable(type = self.superclass)
|
30
22
|
corresponds_to(Registrar::DEFAULT_KEY, type)
|
31
23
|
end
|
24
|
+
|
25
|
+
def self.extended(base)
|
26
|
+
base.include(InstanceMethods)
|
27
|
+
end
|
28
|
+
|
29
|
+
module InstanceMethods
|
30
|
+
attr_reader :manufacturable_item_key
|
31
|
+
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,9 +1,21 @@
|
|
1
1
|
require 'manufacturable/config'
|
2
2
|
|
3
3
|
module Manufacturable
|
4
|
-
class Railtie
|
5
|
-
|
6
|
-
|
4
|
+
class Railtie
|
5
|
+
def self.load
|
6
|
+
load_railtie if rails_defined?
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.load_railtie
|
10
|
+
Class.new(Rails::Railtie).initializer('manufacturable.require_paths') do |app|
|
11
|
+
Manufacturable::Config.require_method = app.config.eager_load ? :require : :require_dependency
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.rails_defined?
|
16
|
+
defined?(Rails)
|
7
17
|
end
|
8
18
|
end
|
9
19
|
end
|
20
|
+
|
21
|
+
Manufacturable::Railtie.load
|
data/lib/manufacturable.rb
CHANGED
@@ -3,31 +3,27 @@ require 'manufacturable/config'
|
|
3
3
|
require 'manufacturable/factory'
|
4
4
|
require 'manufacturable/item'
|
5
5
|
require 'manufacturable/object_factory'
|
6
|
-
require 'manufacturable/railtie'
|
6
|
+
require 'manufacturable/railtie'
|
7
7
|
|
8
8
|
module Manufacturable
|
9
|
-
def self.build(*args, **kwargs)
|
10
|
-
Builder.build(*args, **kwargs)
|
9
|
+
def self.build(*args, **kwargs, &block)
|
10
|
+
Builder.build(*args, **kwargs, &block)
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.build_one(*args, **kwargs)
|
14
|
-
Builder.build_one(*args, **kwargs)
|
13
|
+
def self.build_one(*args, **kwargs, &block)
|
14
|
+
Builder.build_one(*args, **kwargs, &block)
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.build_many(*args, **kwargs)
|
18
|
-
Builder.build_all(*args, **kwargs)
|
17
|
+
def self.build_many(*args, **kwargs, &block)
|
18
|
+
Builder.build_all(*args, **kwargs, &block)
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.build_all(*args, **kwargs)
|
22
|
-
Builder.build_all(*args, **kwargs)
|
21
|
+
def self.build_all(*args, **kwargs, &block)
|
22
|
+
Builder.build_all(*args, **kwargs, &block)
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.registered_keys(type)
|
30
|
-
Registrar.registered_keys(type)
|
25
|
+
def self.builds?(type, key)
|
26
|
+
Builder.builds?(type, key)
|
31
27
|
end
|
32
28
|
|
33
29
|
def self.reset!
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manufacturable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alan Ridlehoover
|
8
8
|
- Fito von Zastrow
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-09-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -120,7 +120,7 @@ metadata:
|
|
120
120
|
bug_tracker_uri: https://github.com/first-try-software/manufacturable/issues
|
121
121
|
homepage_uri: https://github.com/first-try-software/manufacturable
|
122
122
|
source_code_uri: https://github.com/first-try-software/manufacturable
|
123
|
-
post_install_message:
|
123
|
+
post_install_message:
|
124
124
|
rdoc_options: []
|
125
125
|
require_paths:
|
126
126
|
- lib
|
@@ -135,8 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
137
|
requirements: []
|
138
|
-
rubygems_version: 3.
|
139
|
-
signing_key:
|
138
|
+
rubygems_version: 3.2.15
|
139
|
+
signing_key:
|
140
140
|
specification_version: 4
|
141
141
|
summary: Manufacturable is a factory that builds self-registering objects.
|
142
142
|
test_files: []
|