fabrique 0.0.1 → 0.1.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/features/bean_factory.feature +22 -0
- data/features/step_definitions/bean_factory_steps.rb +5 -1
- data/lib/fabrique/bean_factory.rb +14 -8
- data/lib/fabrique/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcf209a41cd39284e0ecbc2c78e3785bc0f677e4
|
4
|
+
data.tar.gz: 67117224f5f81c5deb5b0708334633f69f23bba2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a542c2ee2ebf3086ef5287b436bb7c91794b8c7eb85cb27e3e9ffbd4d0dfd08cf58f10e6a597677bd5fd27e2e80b3a675175f45dec1b830b011cebb1be86872f
|
7
|
+
data.tar.gz: 202da5c74f8b0021c9c19722cf5cfc3bb53acc0f0ea86c13a6db16bd93dac4511fba2e5b061eedd18660ec0dce4bb2c3455a3424df9fc81baa504d59db99609c
|
@@ -208,6 +208,28 @@ Feature: Bean Factory
|
|
208
208
|
Then the "disco_cube" bean has "mesh" set to the "cube_mesh" bean
|
209
209
|
And the "disco_cube" bean has "scale" that is the Integer 10
|
210
210
|
|
211
|
+
Scenario: Inner bean
|
212
|
+
|
213
|
+
Given I have a YAML application context definition:
|
214
|
+
"""
|
215
|
+
---
|
216
|
+
beans:
|
217
|
+
- id: outer
|
218
|
+
class: Fabrique::Test::Fixtures::Constructors::ClassWithPositionalArgumentConstructor
|
219
|
+
constructor_args:
|
220
|
+
- large
|
221
|
+
- red
|
222
|
+
- !bean
|
223
|
+
class: Fabrique::Test::Fixtures::Constructors::ClassWithPositionalArgumentConstructor
|
224
|
+
constructor_args:
|
225
|
+
- infinite
|
226
|
+
- invisible
|
227
|
+
- elephant
|
228
|
+
"""
|
229
|
+
When I request a bean factory for the application context
|
230
|
+
And I request the "outer" bean from the bean factory
|
231
|
+
Then the bean's "shape" is an object with "shape" set to "elephant"
|
232
|
+
|
211
233
|
Scenario: Singleton bean (default)
|
212
234
|
|
213
235
|
Given I have a YAML application context definition:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "
|
1
|
+
require "tempfile"
|
2
2
|
|
3
3
|
After do
|
4
4
|
if defined?(@tmpfile) and File.exists?(@tmpfile)
|
@@ -25,6 +25,10 @@ Then(/^the bean has "(.*?)" set to "(.*?)"$/) do |attr, value|
|
|
25
25
|
expect(@bean.send(attr)).to eql value
|
26
26
|
end
|
27
27
|
|
28
|
+
Then(/^the bean's "(.*?)" is an object with "(.*?)" set to "(.*?)"$/) do |attr, child_attr, value|
|
29
|
+
expect(@bean.send(attr).send(child_attr)).to eql value
|
30
|
+
end
|
31
|
+
|
28
32
|
Then(/^the bean has "(.*?)" that is the Integer "(.*?)"$/) do |attr, int_value|
|
29
33
|
expect(@bean.send(attr)).to eql int_value.to_i
|
30
34
|
end
|
@@ -23,21 +23,25 @@ module Fabrique
|
|
23
23
|
def get_bean_unsynchronized(bean_name)
|
24
24
|
defn = @registry.get_definition(bean_name)
|
25
25
|
|
26
|
+
if defn.singleton? and singleton = @singletons[bean_name]
|
27
|
+
return singleton
|
28
|
+
end
|
29
|
+
|
30
|
+
get_bean_by_definition(defn).tap do |bean|
|
31
|
+
if defn.singleton?
|
32
|
+
@singletons[bean_name] = bean
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_bean_by_definition(defn)
|
26
38
|
if defn.factory_method == "itself"
|
27
39
|
# Support RUBY_VERSION < 2.2.0 (missing Kernel#itself)
|
28
40
|
return defn.type
|
29
41
|
end
|
30
42
|
|
31
|
-
if defn.singleton? and singleton = @singletons[bean_name]
|
32
|
-
return singleton
|
33
|
-
end
|
34
|
-
|
35
43
|
bean = constructor_injection(defn)
|
36
44
|
property_injection(bean, defn)
|
37
|
-
if defn.singleton?
|
38
|
-
@singletons[bean_name] = bean
|
39
|
-
end
|
40
|
-
bean
|
41
45
|
end
|
42
46
|
|
43
47
|
def constructor_injection(defn)
|
@@ -67,6 +71,8 @@ module Fabrique
|
|
67
71
|
data.inject([]) do |acc, v|
|
68
72
|
acc << resolve_bean_references(v)
|
69
73
|
end
|
74
|
+
elsif data.is_a?(BeanDefinition)
|
75
|
+
get_bean_by_definition(data)
|
70
76
|
elsif data.is_a?(BeanReference)
|
71
77
|
get_bean_unsynchronized(data.bean)
|
72
78
|
else
|
data/lib/fabrique/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fabrique
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sheldon Hearn
|
@@ -14,70 +14,70 @@ dependencies:
|
|
14
14
|
name: liquid
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3.2'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cucumber
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.3'
|
83
83
|
description: Factory support library for adapting existing modules for injection as
|
@@ -88,11 +88,11 @@ executables: []
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
91
|
+
- .gitignore
|
92
|
+
- .rspec
|
93
|
+
- .ruby-gemset
|
94
|
+
- .ruby-version
|
95
|
+
- .travis.yml
|
96
96
|
- Gemfile
|
97
97
|
- Guardfile
|
98
98
|
- LICENSE.txt
|
@@ -152,12 +152,12 @@ require_paths:
|
|
152
152
|
- lib
|
153
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
|
-
- -
|
155
|
+
- - '>='
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '2.0'
|
158
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
159
|
requirements:
|
160
|
-
- -
|
160
|
+
- - '>='
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0'
|
163
163
|
requirements: []
|