manufacturable 1.4.1 → 1.6.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: 07eaa0e617a3777c8b2c1a20c7f15f0fcd5b8efafe06fa1c57582e98499d0837
4
- data.tar.gz: 4a8667cbd20f52417c39340cfafdb3a0affb1af92f0686f653760c7bbe681d40
3
+ metadata.gz: 1feea379db04261f90df6f10fba0eca3fddcbf5ba6b4e912a2b9e110ba6a16f0
4
+ data.tar.gz: 2d8345f1bf8ac8bf5af40ec365a3dedb3bc27e0e8873eb879731d19aa98a94f4
5
5
  SHA512:
6
- metadata.gz: 72fbadfba6e099f9844bc1f8a6275baab49b1e915115975620f5649b01f99e89ee935b12d0aca7523851d0d13788ea30bc94bcbc319f92ff5630791f5dc7dafc
7
- data.tar.gz: e9ef2e576429dc2112df98c6630c469e2bf334533edc0d9888a8f6321efed7cc1f92e1048a4f7250a115db6a46b92255372a1514ba7df5c50395474407ae9a35
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(type, key, *args, **kwargs)
34
- @type, @key, @args, @kwargs = type, key, args, kwargs
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 { |klass| klass&.new(*args, **kwargs_with_key) }
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 klasses
46
- Registrar.get(type, key)
56
+ def last_instance
57
+ last_klass&.new(*args, **kwargs_with_key)&.tap { |instance| block&.call(instance) }
47
58
  end
48
59
 
49
- def last_instance
50
- last_klass&.new(*args, **kwargs_with_key)
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.to_a.last
69
+ klasses.last
59
70
  end
60
71
  end
61
72
  end
@@ -27,5 +27,9 @@ module Manufacturable
27
27
 
28
28
  Builder.build_all(@type, key, *args)
29
29
  end
30
+
31
+ def builds?(key)
32
+ Builder.builds?(@type, key)
33
+ end
30
34
  end
31
35
  end
@@ -2,19 +2,11 @@ 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
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 < 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,5 @@
1
+ require 'set'
2
+
1
3
  module Manufacturable
2
4
  class Registrar
3
5
  ALL_KEY = :__all__
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.4.1"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -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' 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
+ end
24
+
25
+ def self.builds?(type, key)
26
+ Builder.builds?(type, key)
23
27
  end
24
28
 
25
29
  def self.registered_types
@@ -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.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: 2020-09-10 00:00:00.000000000 Z
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.1.2
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