manufacturable 1.4.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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