dependor 0.0.6 → 1.0.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.
- data/.gitignore +2 -0
- data/Gemfile.lock +43 -20
- data/Guardfile +1 -1
- data/lib/dependor/auto_inject.rb +3 -3
- data/lib/dependor/auto_injector.rb +17 -21
- data/lib/dependor/class_name_resolver.rb +1 -1
- data/lib/dependor/instantiator.rb +13 -3
- data/lib/dependor/version.rb +1 -1
- data/spec/dependor/class_name_resolver_spec.rb +7 -0
- data/spec/dependor/customized_injector_spec.rb +1 -1
- data/spec/dependor/instantiator_spec.rb +1 -1
- metadata +43 -21
- checksums.yaml +0 -7
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dependor (0.0
|
4
|
+
dependor (1.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
+
coderay (1.0.9)
|
9
10
|
colorize (0.5.8)
|
10
11
|
coveralls (0.6.7)
|
11
12
|
colorize
|
@@ -13,33 +14,55 @@ GEM
|
|
13
14
|
rest-client
|
14
15
|
simplecov (>= 0.7)
|
15
16
|
thor
|
16
|
-
diff-lcs (1.
|
17
|
-
ffi (1.0
|
17
|
+
diff-lcs (1.2.4)
|
18
|
+
ffi (1.9.0)
|
19
|
+
formatador (0.2.4)
|
18
20
|
growl (1.0.3)
|
19
|
-
guard (1.
|
21
|
+
guard (1.8.2)
|
22
|
+
formatador (>= 0.2.4)
|
23
|
+
listen (>= 1.0.0)
|
24
|
+
lumberjack (>= 1.0.2)
|
25
|
+
pry (>= 0.9.10)
|
26
|
+
thor (>= 0.14.6)
|
27
|
+
guard-rspec (3.0.2)
|
28
|
+
guard (>= 1.8)
|
29
|
+
rspec (~> 2.13)
|
30
|
+
libnotify (0.8.1)
|
31
|
+
ffi (>= 1.0.11)
|
32
|
+
listen (1.3.0)
|
33
|
+
rb-fsevent (>= 0.9.3)
|
34
|
+
rb-inotify (>= 0.9)
|
35
|
+
rb-kqueue (>= 0.2)
|
36
|
+
lumberjack (1.0.4)
|
37
|
+
method_source (0.8.2)
|
38
|
+
mime-types (1.24)
|
39
|
+
multi_json (1.7.9)
|
40
|
+
pry (0.9.12.2)
|
41
|
+
coderay (~> 1.0.5)
|
42
|
+
method_source (~> 0.8)
|
43
|
+
slop (~> 3.4)
|
44
|
+
rake (10.1.0)
|
45
|
+
rb-fsevent (0.9.3)
|
46
|
+
rb-inotify (0.9.1)
|
47
|
+
ffi (>= 0.5.0)
|
48
|
+
rb-kqueue (0.2.0)
|
20
49
|
ffi (>= 0.5.0)
|
21
|
-
thor (~> 0.14.6)
|
22
|
-
guard-rspec (0.6.0)
|
23
|
-
guard (>= 0.10.0)
|
24
|
-
libnotify (0.7.2)
|
25
|
-
mime-types (1.23)
|
26
|
-
multi_json (1.7.3)
|
27
|
-
rake (0.9.2.2)
|
28
50
|
rest-client (1.6.7)
|
29
51
|
mime-types (>= 1.16)
|
30
|
-
rspec (2.
|
31
|
-
rspec-core (~> 2.
|
32
|
-
rspec-expectations (~> 2.
|
33
|
-
rspec-mocks (~> 2.
|
34
|
-
rspec-core (2.5
|
35
|
-
rspec-expectations (2.
|
36
|
-
diff-lcs (
|
37
|
-
rspec-mocks (2.
|
52
|
+
rspec (2.14.1)
|
53
|
+
rspec-core (~> 2.14.0)
|
54
|
+
rspec-expectations (~> 2.14.0)
|
55
|
+
rspec-mocks (~> 2.14.0)
|
56
|
+
rspec-core (2.14.5)
|
57
|
+
rspec-expectations (2.14.2)
|
58
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
59
|
+
rspec-mocks (2.14.3)
|
38
60
|
simplecov (0.7.1)
|
39
61
|
multi_json (~> 1.0)
|
40
62
|
simplecov-html (~> 0.7.1)
|
41
63
|
simplecov-html (0.7.1)
|
42
|
-
|
64
|
+
slop (3.4.6)
|
65
|
+
thor (0.18.1)
|
43
66
|
|
44
67
|
PLATFORMS
|
45
68
|
ruby
|
data/Guardfile
CHANGED
data/lib/dependor/auto_inject.rb
CHANGED
@@ -15,11 +15,11 @@ module Dependor
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def method_missing(name, *args, &block)
|
18
|
-
auto_injector.
|
18
|
+
auto_injector.get_by_class_name(name)
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
auto_injector.
|
21
|
+
def respond_to_missing?(name, include_private = false)
|
22
|
+
auto_injector.class_exists?(name)
|
23
23
|
end
|
24
24
|
|
25
25
|
def inject(klass, overrides = {})
|
@@ -8,37 +8,33 @@ module Dependor
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def get(name)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
return @injector.send(name)
|
12
|
+
rescue ArgumentError
|
13
|
+
return @injector.method(name).to_proc
|
14
|
+
rescue NameError
|
15
|
+
get_by_class_name(name)
|
16
|
+
end
|
17
17
|
|
18
|
+
def get_by_class_name(name)
|
19
|
+
ensure_class_exists!(name)
|
18
20
|
klass = @class_name_resolver.for_name(name)
|
19
|
-
@instantiator
|
21
|
+
instantiator = @instantiator
|
22
|
+
@injector.define_singleton_method(name) do
|
23
|
+
instantiator.instantiate(klass)
|
24
|
+
end
|
25
|
+
@injector.send(name)
|
20
26
|
end
|
21
27
|
|
22
|
-
def
|
23
|
-
|
28
|
+
def class_exists?(name)
|
29
|
+
!!@class_name_resolver.for_name(name)
|
24
30
|
end
|
25
31
|
|
26
32
|
private
|
27
33
|
|
28
|
-
def
|
29
|
-
unless
|
34
|
+
def ensure_class_exists!(name)
|
35
|
+
unless class_exists?(name)
|
30
36
|
raise UnknownObject.new("Injector does not know how to create object: #{name}")
|
31
37
|
end
|
32
38
|
end
|
33
|
-
|
34
|
-
def has_method?(name)
|
35
|
-
@injector.methods.include?(name)
|
36
|
-
end
|
37
|
-
|
38
|
-
def no_arguments?(name)
|
39
|
-
@injector.method(name).arity == 0
|
40
|
-
end
|
41
|
-
|
42
39
|
end
|
43
|
-
|
44
40
|
end
|
@@ -2,13 +2,23 @@ module Dependor
|
|
2
2
|
class Instantiator
|
3
3
|
def initialize(injector)
|
4
4
|
@injector = injector
|
5
|
+
@constructor_params = {}
|
5
6
|
end
|
6
7
|
|
7
8
|
def instantiate(klass)
|
8
|
-
|
9
|
-
dependency_names = params.select{|type, name| type == :req}.map{|type, name| name}
|
10
|
-
dependencies = dependency_names.map{|name| @injector.get(name)}
|
9
|
+
dependencies = dependecy_names_for(klass).map{|name| @injector.get(name)}
|
11
10
|
return klass.new(*dependencies)
|
12
11
|
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def dependecy_names_for(klass)
|
16
|
+
@constructor_params[klass] ||= get_constructor_params(klass)
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_constructor_params(klass)
|
20
|
+
params = klass.instance_method(:initialize).parameters
|
21
|
+
params.select{|type, name| type == :req}.map{|type, name| name}
|
22
|
+
end
|
13
23
|
end
|
14
24
|
end
|
data/lib/dependor/version.rb
CHANGED
@@ -40,4 +40,11 @@ describe Dependor::ClassNameResolver do
|
|
40
40
|
|
41
41
|
resolver.for_name(:foo_bar_baz_2).should == FooBarBaz2
|
42
42
|
end
|
43
|
+
|
44
|
+
it "doesnt have Object in search modules after calling for_name" do
|
45
|
+
resolver = Dependor::ClassNameResolver.new([])
|
46
|
+
|
47
|
+
resolver.for_name(:something)
|
48
|
+
resolver.search_modules.should_not include(Object)
|
49
|
+
end
|
43
50
|
end
|
metadata
CHANGED
@@ -1,111 +1,126 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Adam Pohorecki
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-08-27 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rspec
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: guard
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: guard-rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: growl
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: libnotify
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: rake
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: coveralls
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- - '>='
|
115
|
+
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- - '>='
|
123
|
+
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
description: Dependor is not a framework for Dependency Injection, but something thatt
|
@@ -157,25 +172,32 @@ files:
|
|
157
172
|
- spec/spec_helper.rb
|
158
173
|
homepage: http://github.com/psyho/dependor
|
159
174
|
licenses: []
|
160
|
-
metadata: {}
|
161
175
|
post_install_message:
|
162
176
|
rdoc_options: []
|
163
177
|
require_paths:
|
164
178
|
- lib
|
165
179
|
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
166
181
|
requirements:
|
167
|
-
- - '>='
|
182
|
+
- - ! '>='
|
168
183
|
- !ruby/object:Gem::Version
|
169
184
|
version: '0'
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
hash: -1538921079382714093
|
170
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
171
190
|
requirements:
|
172
|
-
- - '>='
|
191
|
+
- - ! '>='
|
173
192
|
- !ruby/object:Gem::Version
|
174
193
|
version: '0'
|
194
|
+
segments:
|
195
|
+
- 0
|
196
|
+
hash: -1538921079382714093
|
175
197
|
requirements: []
|
176
198
|
rubyforge_project: dependor
|
177
|
-
rubygems_version:
|
199
|
+
rubygems_version: 1.8.25
|
178
200
|
signing_key:
|
179
|
-
specification_version:
|
201
|
+
specification_version: 3
|
180
202
|
summary: A couple of classes and modules that simplify dependency injection in Ruby.
|
181
203
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 873e4358991c9c634508e0ed5f226259ad8ccb13
|
4
|
-
data.tar.gz: 84142cf6ec14a15c5ac7e5c00eab15342801b2e2
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 2a72421e7d881c4088df0b2c6e4bb294de0488360fe5415c76005d3d50cf62f1e052e8e98d27c68f61a440b73ea3179d317733abff48ebb2d726cede0df3c5b3
|
7
|
-
data.tar.gz: ae6e7afecf9210d6189883f1a4c2f53b388d29f239490bd655d84cb2c24c7a13ebd689102f21ad939eaf055ac6f727f79443b6a49c4b8a53e9b801542ec7c3c2
|