manufacturable 1.3.1 → 1.5.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.rb +9 -9
- data/lib/manufacturable/builder.rb +20 -14
- data/lib/manufacturable/item.rb +15 -0
- data/lib/manufacturable/railtie.rb +15 -3
- data/lib/manufacturable/version.rb +1 -1
- data/manufacturable.gemspec +1 -1
- metadata +2 -3
- 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: 0a31e2944a3a3ba6d32850cc919ff1a74e2172645cd3e8557f7e71a1e3968dcb
|
|
4
|
+
data.tar.gz: 12129e965112f3425b00cf46e812ce8b0bddf47169ac4ee3adedaae7561f72f1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 336fb5ac884d512ad3a43ef9f720b11fec7e56475dd28e5be8ad80f4de86c3787f6cc89de2e6c98207a45f4eb67345fbcb1874316d251de6721f44cb1fa9b9b9
|
|
7
|
+
data.tar.gz: 96ba407a234793cca65a245f7fca4ccb4bd96687e124e605f6ba24116cba045b45f8654c38ab5a9fd56ef9d69cc190e026251385f58b77af9b949e4cc2491661
|
data/lib/manufacturable.rb
CHANGED
|
@@ -3,23 +3,23 @@ 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)
|
|
10
|
-
Builder.build(*args)
|
|
9
|
+
def self.build(*args, **kwargs, &block)
|
|
10
|
+
Builder.build(*args, **kwargs, &block)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def self.build_one(*args)
|
|
14
|
-
Builder.build_one(*args)
|
|
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)
|
|
18
|
-
Builder.build_all(*args)
|
|
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)
|
|
22
|
-
Builder.build_all(*args)
|
|
21
|
+
def self.build_all(*args, **kwargs, &block)
|
|
22
|
+
Builder.build_all(*args, **kwargs, &block)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def self.registered_types
|
|
@@ -2,16 +2,16 @@ 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
15
|
end
|
|
16
16
|
|
|
17
17
|
def build
|
|
@@ -28,10 +28,10 @@ module Manufacturable
|
|
|
28
28
|
|
|
29
29
|
private
|
|
30
30
|
|
|
31
|
-
attr_reader :type, :key, :args, :kwargs
|
|
31
|
+
attr_reader :type, :key, :args, :kwargs, :block
|
|
32
32
|
|
|
33
|
-
def initialize(type, key, *args, **kwargs)
|
|
34
|
-
@type, @key, @args, @kwargs = type, key, args, kwargs
|
|
33
|
+
def initialize(type, key, *args, **kwargs, &block)
|
|
34
|
+
@type, @key, @args, @kwargs, @block = type, key, args, kwargs, block
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def return_first?
|
|
@@ -39,19 +39,25 @@ module Manufacturable
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def instances
|
|
42
|
-
@instances ||= klasses.map
|
|
42
|
+
@instances ||= klasses.map do |klass|
|
|
43
|
+
klass.new(*args, **kwargs_with_key).tap { |instance| block&.call(instance) }
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def last_instance
|
|
48
|
+
last_klass&.new(*args, **kwargs_with_key)&.tap { |instance| block&.call(instance) }
|
|
43
49
|
end
|
|
44
50
|
|
|
45
51
|
def klasses
|
|
46
|
-
Registrar.get(type, key)
|
|
52
|
+
Registrar.get(type, key).to_a
|
|
47
53
|
end
|
|
48
54
|
|
|
49
|
-
def
|
|
50
|
-
|
|
55
|
+
def kwargs_with_key
|
|
56
|
+
kwargs.merge(manufacturable_item_key: key)
|
|
51
57
|
end
|
|
52
58
|
|
|
53
59
|
def last_klass
|
|
54
|
-
klasses.
|
|
60
|
+
klasses.last
|
|
55
61
|
end
|
|
56
62
|
end
|
|
57
63
|
end
|
data/lib/manufacturable/item.rb
CHANGED
|
@@ -2,6 +2,21 @@ require 'manufacturable/registrar'
|
|
|
2
2
|
|
|
3
3
|
module Manufacturable
|
|
4
4
|
module Item
|
|
5
|
+
def self.extended(base)
|
|
6
|
+
base.instance_eval do
|
|
7
|
+
def new(*args, **kwargs, &block)
|
|
8
|
+
key = kwargs.delete(:manufacturable_item_key)
|
|
9
|
+
instance = kwargs.empty? ? super(*args, &block) : super
|
|
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
|
|
18
|
+
end
|
|
19
|
+
|
|
5
20
|
def corresponds_to(key, type = self.superclass)
|
|
6
21
|
key = key == type ? Registrar::ALL_KEY : key
|
|
7
22
|
Registrar.register(type, key, self)
|
|
@@ -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/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,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: manufacturable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alan Ridlehoover
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2020-
|
|
12
|
+
date: 2020-09-23 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
|
data/assets/factory.png
DELETED
|
Binary file
|