codeine 0.0.3 → 0.0.4
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/lib/codeine/container.rb +2 -2
- data/lib/codeine/injectable.rb +5 -4
- data/lib/codeine/version.rb +1 -1
- data/spec/container_spec.rb +0 -6
- data/spec/injectable_spec.rb +13 -1
- metadata +5 -5
data/lib/codeine/container.rb
CHANGED
@@ -14,9 +14,9 @@ module Codeine
|
|
14
14
|
services[key.to_sym] = block
|
15
15
|
end
|
16
16
|
|
17
|
-
def get(key)
|
17
|
+
def get(key, args = [])
|
18
18
|
key = key.to_sym
|
19
|
-
service = services[key].call
|
19
|
+
service = services[key].call(*args)
|
20
20
|
filters.each do |f|
|
21
21
|
if key.to_s =~ f[:pattern]
|
22
22
|
f[:block].call(key, service)
|
data/lib/codeine/injectable.rb
CHANGED
@@ -6,12 +6,13 @@ module Codeine
|
|
6
6
|
Codeine::Utility.nearest_container(self)
|
7
7
|
end
|
8
8
|
|
9
|
-
def codeine_inject(service,
|
10
|
-
|
11
|
-
|
9
|
+
def codeine_inject(service, options = {})
|
10
|
+
args = options.delete(:args){[]}
|
11
|
+
method_name = options.delete(:method_name) || service
|
12
|
+
define_method(method_name.to_sym) do |*args|
|
12
13
|
cache = instance_variable_get("@codeine_#{service}")
|
13
14
|
unless cache
|
14
|
-
cache = self.class.nearest_codeine_container
|
15
|
+
cache = self.class.nearest_codeine_container.get(service.to_sym, *args)
|
15
16
|
instance_variable_set("@codeine_#{service}", cache)
|
16
17
|
end
|
17
18
|
cache
|
data/lib/codeine/version.rb
CHANGED
data/spec/container_spec.rb
CHANGED
data/spec/injectable_spec.rb
CHANGED
@@ -13,6 +13,7 @@ describe Codeine::Injectable do
|
|
13
13
|
|
14
14
|
end
|
15
15
|
end
|
16
|
+
let(:container){Codeine::Container.new}
|
16
17
|
|
17
18
|
describe "dynamic methods" do
|
18
19
|
it "should create a module-level codeine_inject method" do
|
@@ -20,11 +21,22 @@ describe Codeine::Injectable do
|
|
20
21
|
end
|
21
22
|
|
22
23
|
it "should create a service getter for injected services" do
|
23
|
-
Foo::Bar.codeine_container =
|
24
|
+
Foo::Bar.codeine_container = container
|
25
|
+
container.register(:bat){"man"}
|
24
26
|
Foo::Bar.codeine_inject(:bat)
|
25
27
|
bar = Foo::Bar.new
|
26
28
|
bar.bat.should == "man"
|
27
29
|
end
|
30
|
+
|
31
|
+
it "should pass provided parameters to the registered block" do
|
32
|
+
Foo::Bar.codeine_container = container
|
33
|
+
container.register(:bat){|arg|
|
34
|
+
"foo" + arg
|
35
|
+
}
|
36
|
+
Foo::Bar.codeine_inject(:bat)
|
37
|
+
bar = Foo::Bar.new
|
38
|
+
bar.bat("man").should == "fooman"
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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:
|
12
|
+
date: 2012-02-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &9767840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *9767840
|
25
25
|
description: A really simple, partitionable, ruby-flavored dependency injector
|
26
26
|
email:
|
27
27
|
- tim.ariyeh@gmail.com
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
version: '0'
|
69
69
|
requirements: []
|
70
70
|
rubyforge_project: codeine
|
71
|
-
rubygems_version: 1.8.
|
71
|
+
rubygems_version: 1.8.15
|
72
72
|
signing_key:
|
73
73
|
specification_version: 3
|
74
74
|
summary: A simple Ruby dependency injector
|