manufacturable 1.4.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbdb8a719fcf23191bd800e45a570430be3dbf5a0dce71474b44ca44cc8355a6
4
- data.tar.gz: 9102df38b83cdf17ba32f5c277d08779bf13cfb7bddebe829859d2efe490e8bd
3
+ metadata.gz: 0a31e2944a3a3ba6d32850cc919ff1a74e2172645cd3e8557f7e71a1e3968dcb
4
+ data.tar.gz: 12129e965112f3425b00cf46e812ce8b0bddf47169ac4ee3adedaae7561f72f1
5
5
  SHA512:
6
- metadata.gz: f10dff173251339d53a12f00e2aab39fcd299386f7f6adf31c6d186ecdd6ff58c4115ea0e98cea8686da611f045fd682aa4ac102848dadecca6d1c6d7d662b7b
7
- data.tar.gz: 2bab5827067a63715f43acd712e46208d2be51bd2a6e4c6cc3167d52afb131659cc0afeae9751b95639e6fc7ed0e23a90a0e07aa986dfc63d3b78d8913eb197a
6
+ metadata.gz: 336fb5ac884d512ad3a43ef9f720b11fec7e56475dd28e5be8ad80f4de86c3787f6cc89de2e6c98207a45f4eb67345fbcb1874316d251de6721f44cb1fa9b9b9
7
+ data.tar.gz: 96ba407a234793cca65a245f7fca4ccb4bd96687e124e605f6ba24116cba045b45f8654c38ab5a9fd56ef9d69cc190e026251385f58b77af9b949e4cc2491661
@@ -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' if defined?(Rails)
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
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,15 +39,17 @@ module Manufacturable
39
39
  end
40
40
 
41
41
  def instances
42
- @instances ||= klasses.map { |klass| klass&.new(*args, **kwargs_with_key) }
42
+ @instances ||= klasses.map do |klass|
43
+ klass.new(*args, **kwargs_with_key).tap { |instance| block&.call(instance) }
44
+ end
43
45
  end
44
46
 
45
- def klasses
46
- Registrar.get(type, key)
47
+ def last_instance
48
+ last_klass&.new(*args, **kwargs_with_key)&.tap { |instance| block&.call(instance) }
47
49
  end
48
50
 
49
- def last_instance
50
- last_klass&.new(*args, **kwargs_with_key)
51
+ def klasses
52
+ Registrar.get(type, key).to_a
51
53
  end
52
54
 
53
55
  def kwargs_with_key
@@ -55,7 +57,7 @@ module Manufacturable
55
57
  end
56
58
 
57
59
  def last_klass
58
- klasses.to_a.last
60
+ klasses.last
59
61
  end
60
62
  end
61
63
  end
@@ -1,9 +1,21 @@
1
1
  require 'manufacturable/config'
2
2
 
3
3
  module Manufacturable
4
- class Railtie < Rails::Railtie
5
- initializer "manufacturable.require_paths" do |app|
6
- Manufacturable::Config.require_method = app.config.eager_load ? :require : :require_dependency
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
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.4.2"
2
+ VERSION = "1.5.0"
3
3
  end
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.2
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-09-17 00:00:00.000000000 Z
12
+ date: 2020-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler