codeine 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)
@@ -6,12 +6,13 @@ module Codeine
6
6
  Codeine::Utility.nearest_container(self)
7
7
  end
8
8
 
9
- def codeine_inject(service, method_name = nil)
10
- method_name = method_name || service
11
- define_method(method_name.to_sym) do
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[service.to_sym]
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
@@ -1,3 +1,3 @@
1
1
  module Codeine
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -22,12 +22,6 @@ describe Codeine::Container do
22
22
  container.get(:foo).should == hash
23
23
  end
24
24
 
25
- it "should be aliased to []" do
26
- hash = Hash.new
27
- container.register(:foo){hash}
28
-
29
- container[:foo].should == hash
30
- end
31
25
  end
32
26
 
33
27
  describe "#filter" do
@@ -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 = {:bat => "man"}
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.3
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: 2011-10-24 00:00:00.000000000Z
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: &15396940 !ruby/object:Gem::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: *15396940
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.11
71
+ rubygems_version: 1.8.15
72
72
  signing_key:
73
73
  specification_version: 3
74
74
  summary: A simple Ruby dependency injector