ioc_rb 0.1.0 → 0.1.1

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ioc_rb (0.1.0)
4
+ ioc_rb (0.1.1)
5
5
  activesupport
6
6
  request_store
7
7
 
@@ -57,9 +57,9 @@ class IocRb::BeanFactory
57
57
  bean_class = bean_metadata.bean_class.split('::').inject(Object) do |mod, class_name|
58
58
  mod.const_get(class_name)
59
59
  end
60
+ bean_metadata.fetch_attrs!(bean_class)
60
61
  end
61
62
  bean = bean_metadata.instance ? bean_class.new : bean_class
62
-
63
63
  if bean_metadata.has_factory_method?
64
64
  set_bean_dependencies(bean, bean_metadata)
65
65
  bean = bean.send(bean_metadata.factory_method)
@@ -24,18 +24,22 @@ class IocRb::BeanMetadata
24
24
  @factory_method = options[:factory_method]
25
25
  @attrs = []
26
26
 
27
- if @bean_class.respond_to?(:_iocrb_injectable_attrs)
28
- @bean_class._iocrb_injectable_attrs.each do |attr, options|
29
- options[:ref] ||= attr
30
- @attrs << IocRb::BeanMetadata::Attribute.new(attr, options)
31
- end
32
- end
27
+ fetch_attrs!(@bean_class)
33
28
 
34
29
  if block
35
30
  Dsl.new(@attrs).instance_exec(&block)
36
31
  end
37
32
  end
38
33
 
34
+ def fetch_attrs!(klass)
35
+ if klass.respond_to?(:_iocrb_injectable_attrs)
36
+ klass._iocrb_injectable_attrs.each do |attr, options|
37
+ options[:ref] ||= attr
38
+ @attrs << IocRb::BeanMetadata::Attribute.new(attr, options)
39
+ end
40
+ end
41
+ end
42
+
39
43
  def has_factory_method?
40
44
  !!@factory_method
41
45
  end
@@ -1,3 +1,3 @@
1
1
  module IocRb
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -7,6 +7,10 @@ describe "Object.inject" do
7
7
  inject :contacts_repository
8
8
  inject :validator, ref: :contact_validator
9
9
  end
10
+ class ContactBookService
11
+ inject :contacts_repository
12
+ inject :validator, ref: :contact_validator
13
+ end
10
14
  class ContactsRepository
11
15
  end
12
16
  class ContactValidator
@@ -14,9 +18,10 @@ describe "Object.inject" do
14
18
 
15
19
  let(:container) do
16
20
  IocRb::Container.new do |c|
17
- c.bean(:contacts_repository, class: ContactsRepository)
18
- c.bean(:contact_validator, class: ContactValidator)
19
- c.bean(:contact_book, class: ContactBook)
21
+ c.bean(:contacts_repository, class: ContactsRepository)
22
+ c.bean(:contact_validator, class: ContactValidator)
23
+ c.bean(:contact_book, class: ContactBook)
24
+ c.bean(:contact_book_service, class: "ContactBookService")
20
25
  end
21
26
  end
22
27
 
@@ -25,6 +30,11 @@ describe "Object.inject" do
25
30
  container[:contact_book].validator.should be_a(ContactValidator)
26
31
  end
27
32
 
33
+ it "should lazy autowire dependencies for string class names" do
34
+ container[:contact_book_service].contacts_repository.should be_a(ContactsRepository)
35
+ container[:contact_book_service].validator.should be_a(ContactValidator)
36
+ end
37
+
28
38
  it "should raise ArgumentError if non-symbol passed as dependency name" do
29
39
  expect do
30
40
  class SomeClass
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ioc_rb
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Albert Gazizov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-04-08 00:00:00.000000000 Z
13
+ date: 2014-05-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  prerelease: false
@@ -122,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
122
  - !ruby/object:Gem::Version
123
123
  segments:
124
124
  - 0
125
- hash: -861473019195277398
125
+ hash: 1078915959922104396
126
126
  version: '0'
127
127
  none: false
128
128
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  - !ruby/object:Gem::Version
132
132
  segments:
133
133
  - 0
134
- hash: -861473019195277398
134
+ hash: 1078915959922104396
135
135
  version: '0'
136
136
  none: false
137
137
  requirements: []