injectable 0.0.2 → 0.0.3

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/README.md CHANGED
@@ -11,7 +11,7 @@ Usage
11
11
  Say we have a `UserService` that has some basic logic for performing operations
12
12
  related to a `User` and a `FacebookService`. We can tell the `UserService` what
13
13
  its dependencies are via `Injectable`. Note that as of `0.0.2` all objects that
14
- can be injecteed into others must include the `Injectable` module.
14
+ can be injected into others must include the `Injectable` module.
15
15
 
16
16
  ```ruby
17
17
  class User
@@ -64,7 +64,8 @@ user_service = container.get(:user_service)
64
64
  ```
65
65
 
66
66
  Injectable also supports depending on roles rather than concrete classes by
67
- allowing the registration of classes whose instances perform that role:
67
+ allowing the registration of classes whose instances perform that role. An
68
+ implementation can be registered on a single container itself as a "one off":
68
69
 
69
70
  ```ruby
70
71
  container = Injectable::Container.new
@@ -73,10 +74,13 @@ user_service = container.get(:user_service)
73
74
  # `user_service`'s facebook_service will be an instance of DifferentFacebookService
74
75
  ```
75
76
 
76
- You can also define concrete implementations at the global level:
77
+ You can also define concrete implementations at the global level via `configure`:
77
78
 
78
79
  ```ruby
79
- Injectable::Registry.register_implementation(:facebook_service, DifferentFacebookService)
80
+ Injectable.configure do |config|
81
+ config.register_implementation(:facebook_service, DifferentFacebookService)
82
+ end
83
+
80
84
  container = Injectable::Container.new
81
85
  user_service = container.get(:user_service)
82
86
  # `user_service`'s facebook_service will be an instance of DifferentFacebookService
data/lib/injectable.rb CHANGED
@@ -14,6 +14,21 @@ module Injectable
14
14
 
15
15
  class << self
16
16
 
17
+ # Configure the global injectable registry. Simply just yields to the
18
+ # registry itself. If no block is provided returns the registry.
19
+ #
20
+ # @example Configure the registry.
21
+ # Injectable.configure do |registry|
22
+ # registry.register_implementation(:user, User)
23
+ # end
24
+ #
25
+ # @return [ Injectable::Registry ] The registry.
26
+ #
27
+ # @since 0.0.3
28
+ def configure
29
+ block_given? ? yield(Registry) : Registry
30
+ end
31
+
17
32
  # Including the Injectable module will extend the class with the necessary
18
33
  # macros.
19
34
  #
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Injectable
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: injectable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -55,7 +55,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
55
  version: '0'
56
56
  segments:
57
57
  - 0
58
- hash: -1472989141403557370
58
+ hash: -519657374346971908
59
59
  required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  none: false
61
61
  requirements:
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  segments:
66
66
  - 0
67
- hash: -1472989141403557370
67
+ hash: -519657374346971908
68
68
  requirements: []
69
69
  rubyforge_project:
70
70
  rubygems_version: 1.8.24