manufacturable 1.4.1 → 1.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 +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 +13 -9
- data/manufacturable.gemspec +1 -1
- metadata +6 -7
- data/assets/factory.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1feea379db04261f90df6f10fba0eca3fddcbf5ba6b4e912a2b9e110ba6a16f0
|
4
|
+
data.tar.gz: 2d8345f1bf8ac8bf5af40ec365a3dedb3bc27e0e8873eb879731d19aa98a94f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0c9267425d0782095662830afa73a9a9a5fec0fb5df11d820bc04365f70ca042fff9842f81910c28dd9ec8f7b6eade54f2eef6cf02f28019851f4c6e0f9ffbf
|
7
|
+
data.tar.gz: ad0a90d1041cb5111955a34cec43ec917bd85f0418cc4ccfc3b83be2674a01522a8bb190069f3be29568b75389f891325b79d0eab6855f235abde1b07ef438b1
|
@@ -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,23 +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
|
+
end
|
24
|
+
|
25
|
+
def self.builds?(type, key)
|
26
|
+
Builder.builds?(type, key)
|
23
27
|
end
|
24
28
|
|
25
29
|
def self.registered_types
|
data/manufacturable.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
}
|
20
20
|
|
21
21
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
22
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|assets)/}) }
|
23
23
|
end
|
24
24
|
|
25
25
|
spec.bindir = "exe"
|
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: 1.
|
4
|
+
version: 1.6.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
|
@@ -101,7 +101,6 @@ files:
|
|
101
101
|
- LICENSE.txt
|
102
102
|
- README.md
|
103
103
|
- Rakefile
|
104
|
-
- assets/factory.png
|
105
104
|
- bin/console
|
106
105
|
- bin/setup
|
107
106
|
- lib/manufacturable.rb
|
@@ -121,7 +120,7 @@ metadata:
|
|
121
120
|
bug_tracker_uri: https://github.com/first-try-software/manufacturable/issues
|
122
121
|
homepage_uri: https://github.com/first-try-software/manufacturable
|
123
122
|
source_code_uri: https://github.com/first-try-software/manufacturable
|
124
|
-
post_install_message:
|
123
|
+
post_install_message:
|
125
124
|
rdoc_options: []
|
126
125
|
require_paths:
|
127
126
|
- lib
|
@@ -136,8 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
135
|
- !ruby/object:Gem::Version
|
137
136
|
version: '0'
|
138
137
|
requirements: []
|
139
|
-
rubygems_version: 3.
|
140
|
-
signing_key:
|
138
|
+
rubygems_version: 3.2.15
|
139
|
+
signing_key:
|
141
140
|
specification_version: 4
|
142
141
|
summary: Manufacturable is a factory that builds self-registering objects.
|
143
142
|
test_files: []
|
data/assets/factory.png
DELETED
Binary file
|