dependor 0.0.1 → 0.0.2
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/.pelusa.yml +1 -0
- data/Gemfile.lock +3 -1
- data/dependor.gemspec +1 -0
- data/lib/dependor.rb +10 -9
- data/lib/dependor/auto_inject.rb +6 -1
- data/lib/dependor/customized_injector.rb +11 -0
- data/lib/dependor/version.rb +1 -1
- data/pelusa.sh +3 -0
- data/spec/dependor/auto_inject_spec.rb +23 -0
- data/spec/dependor/customized_injector_spec.rb +25 -0
- metadata +60 -15
data/.pelusa.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
sources: lib/**/*.rb
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dependor (0.0.
|
4
|
+
dependor (0.0.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
@@ -15,6 +15,7 @@ GEM
|
|
15
15
|
guard-rspec (0.6.0)
|
16
16
|
guard (>= 0.10.0)
|
17
17
|
libnotify (0.7.2)
|
18
|
+
rake (0.9.2.2)
|
18
19
|
rspec (2.5.0)
|
19
20
|
rspec-core (~> 2.5.0)
|
20
21
|
rspec-expectations (~> 2.5.0)
|
@@ -34,4 +35,5 @@ DEPENDENCIES
|
|
34
35
|
guard
|
35
36
|
guard-rspec
|
36
37
|
libnotify
|
38
|
+
rake
|
37
39
|
rspec
|
data/dependor.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_development_dependency 'guard-rspec'
|
21
21
|
s.add_development_dependency 'growl'
|
22
22
|
s.add_development_dependency 'libnotify'
|
23
|
+
s.add_development_dependency 'rake'
|
23
24
|
|
24
25
|
s.files = `git ls-files`.split("\n")
|
25
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/dependor.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'dependor/constructor'
|
2
2
|
|
3
3
|
module Dependor
|
4
|
-
autoload :AutoInject,
|
5
|
-
autoload :AutoInjector,
|
6
|
-
autoload :ClassNameResolver,
|
7
|
-
autoload :
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
4
|
+
autoload :AutoInject, 'dependor/auto_inject'
|
5
|
+
autoload :AutoInjector, 'dependor/auto_injector'
|
6
|
+
autoload :ClassNameResolver, 'dependor/class_name_resolver'
|
7
|
+
autoload :CustomizedInjector, 'dependor/customized_injector'
|
8
|
+
autoload :Injectable, 'dependor/injectable'
|
9
|
+
autoload :Instantiator, 'dependor/instantiator'
|
10
|
+
autoload :Let, 'dependor/let'
|
11
|
+
autoload :Shorty, 'dependor/shorty'
|
12
|
+
autoload :UnknownObject, 'dependor/exceptions'
|
13
|
+
autoload :VERSION, 'dependor/version'
|
13
14
|
end
|
data/lib/dependor/auto_inject.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Dependor
|
2
2
|
module AutoInject
|
3
|
-
|
4
3
|
module ClassMethods
|
5
4
|
def look_in_modules(*modules)
|
6
5
|
search_modules.concat(modules)
|
@@ -23,6 +22,12 @@ module Dependor
|
|
23
22
|
auto_injector.resolvable?(name)
|
24
23
|
end
|
25
24
|
|
25
|
+
def inject(klass, overrides = {})
|
26
|
+
injector = Dependor::CustomizedInjector.new(auto_injector, overrides)
|
27
|
+
instantiator = Dependor::Instantiator.new(injector)
|
28
|
+
instantiator.instantiate(klass)
|
29
|
+
end
|
30
|
+
|
26
31
|
private
|
27
32
|
|
28
33
|
def auto_injector
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Dependor::CustomizedInjector
|
2
|
+
def initialize(injector, customizations)
|
3
|
+
@injector = injector
|
4
|
+
@customizations = customizations
|
5
|
+
end
|
6
|
+
|
7
|
+
def get(name)
|
8
|
+
return @customizations[name] if @customizations.key?(name)
|
9
|
+
return @injector.get(name)
|
10
|
+
end
|
11
|
+
end
|
data/lib/dependor/version.rb
CHANGED
data/pelusa.sh
ADDED
@@ -19,6 +19,15 @@ describe Dependor::AutoInject do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
class SomeFactory
|
23
|
+
attr_reader :foo, :sample_class_with_no_dependencies
|
24
|
+
|
25
|
+
def initialize(foo, sample_class_with_no_dependencies)
|
26
|
+
@foo = foo
|
27
|
+
@sample_class_with_no_dependencies = sample_class_with_no_dependencies
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
22
31
|
class SampleInjector
|
23
32
|
include Dependor::AutoInject
|
24
33
|
look_in_modules SomeModule
|
@@ -26,6 +35,10 @@ describe Dependor::AutoInject do
|
|
26
35
|
def manual_dep
|
27
36
|
"manual dep"
|
28
37
|
end
|
38
|
+
|
39
|
+
def create_foo(foo_name)
|
40
|
+
inject(SomeFactory, foo: foo_name)
|
41
|
+
end
|
29
42
|
end
|
30
43
|
|
31
44
|
let(:injector) { SampleInjector.new }
|
@@ -68,6 +81,16 @@ describe Dependor::AutoInject do
|
|
68
81
|
it_behaves_like 'dependency injector'
|
69
82
|
end
|
70
83
|
|
84
|
+
context 'autoinjecting with custom dependencies' do
|
85
|
+
it "injects the dependencies which are not explicitly specified" do
|
86
|
+
injector.create_foo("the foo name").sample_class_with_no_dependencies.should be_an_instance_of(SampleClassWithNoDependencies)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "passes through the dependencies that were specified" do
|
90
|
+
injector.create_foo("the foo name").foo.should == "the foo name"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
71
94
|
it "raises an error if the object is not found" do
|
72
95
|
proc{ injector.unknown_object }.should raise_exception(Dependor::UnknownObject)
|
73
96
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dependor::CustomizedInjector do
|
4
|
+
let(:other_injector) { stub }
|
5
|
+
|
6
|
+
it "returns the customized dependency if given" do
|
7
|
+
injector = Dependor::CustomizedInjector.new(other_injector, foo: 'hello')
|
8
|
+
|
9
|
+
injector.get(:foo).should == 'hello'
|
10
|
+
end
|
11
|
+
|
12
|
+
it "returns the customized dependency even if nil" do
|
13
|
+
injector = Dependor::CustomizedInjector.new(other_injector, foo: nil)
|
14
|
+
|
15
|
+
injector.get(:foo).should be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "delegates to the other injector" do
|
19
|
+
other_injector.should_receive(:get).with(:foo).and_return(:the_foo)
|
20
|
+
|
21
|
+
injector = Dependor::CustomizedInjector.new(other_injector, bar: 'a')
|
22
|
+
|
23
|
+
injector.get(:foo).should == :the_foo
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: guard
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: guard-rspec
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: growl
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: libnotify
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,7 +85,28 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rake
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
69
110
|
description: Dependor is not a framework for Dependency Injection, but something thatt
|
70
111
|
reduces duplication a little bit when doing manual dependency injection in settings
|
71
112
|
like Rails apps.
|
@@ -76,6 +117,7 @@ extensions: []
|
|
76
117
|
extra_rdoc_files: []
|
77
118
|
files:
|
78
119
|
- .gitignore
|
120
|
+
- .pelusa.yml
|
79
121
|
- .travis.yml
|
80
122
|
- Gemfile
|
81
123
|
- Gemfile.lock
|
@@ -89,15 +131,18 @@ files:
|
|
89
131
|
- lib/dependor/auto_injector.rb
|
90
132
|
- lib/dependor/class_name_resolver.rb
|
91
133
|
- lib/dependor/constructor.rb
|
134
|
+
- lib/dependor/customized_injector.rb
|
92
135
|
- lib/dependor/exceptions.rb
|
93
136
|
- lib/dependor/injectable.rb
|
94
137
|
- lib/dependor/instantiator.rb
|
95
138
|
- lib/dependor/let.rb
|
96
139
|
- lib/dependor/shorty.rb
|
97
140
|
- lib/dependor/version.rb
|
141
|
+
- pelusa.sh
|
98
142
|
- spec/dependor/auto_inject_spec.rb
|
99
143
|
- spec/dependor/class_name_resolver_spec.rb
|
100
144
|
- spec/dependor/constructor_spec.rb
|
145
|
+
- spec/dependor/customized_injector_spec.rb
|
101
146
|
- spec/dependor/injectable_spec.rb
|
102
147
|
- spec/dependor/instantiator_spec.rb
|
103
148
|
- spec/dependor/let_spec.rb
|
@@ -117,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
162
|
version: '0'
|
118
163
|
segments:
|
119
164
|
- 0
|
120
|
-
hash:
|
165
|
+
hash: -493455405
|
121
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
167
|
none: false
|
123
168
|
requirements:
|
@@ -126,10 +171,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
171
|
version: '0'
|
127
172
|
segments:
|
128
173
|
- 0
|
129
|
-
hash:
|
174
|
+
hash: -493455405
|
130
175
|
requirements: []
|
131
176
|
rubyforge_project: dependor
|
132
|
-
rubygems_version: 1.8.
|
177
|
+
rubygems_version: 1.8.24
|
133
178
|
signing_key:
|
134
179
|
specification_version: 3
|
135
180
|
summary: A couple of classes and modules that simplify dependency injection in Ruby.
|