mordor 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,7 @@ require 'mongo'
3
3
  require 'extlib'
4
4
  require 'json'
5
5
  require 'mordor/version'
6
+ require 'mordor/config'
6
7
  require 'mordor/collection'
7
8
  require 'mordor/resource'
8
9
 
@@ -82,17 +83,10 @@ class Time
82
83
  end
83
84
 
84
85
  module Mordor
85
- CONFIG = {
86
- :hostname => 'localhost',
87
- :port => 27017,
88
- :database => 'development'
89
- }
90
-
91
86
  def connection
92
- @connection ||= Mongo::Connection.new(CONFIG[:hostname], CONFIG[:port])
93
- @connection.autenticate(CONFIG[:username], CONFIG[:password]) if CONFIG[:username]
94
- @connection.db(CONFIG[:database])
87
+ @connection ||= Mongo::Connection.new(Mordor::Config[:hostname], Mordor::Config[:port])
88
+ @connection.autenticate(Mordor::Config[:username], Mordor::Config[:password]) if Mordor::Config[:username]
89
+ @connection.db(Mordor::Config[:database])
95
90
  end
96
91
  module_function :connection
97
-
98
92
  end
@@ -0,0 +1,82 @@
1
+ module Mordor
2
+ class Config
3
+ class << self
4
+
5
+ # Yields the configuration.
6
+ #
7
+ # ==== Block parameters
8
+ # c<Hash>:: The configuration parameters.
9
+ #
10
+ # ==== Examples
11
+ # Merb::Config.use do |config|
12
+ # config[:exception_details] = false
13
+ # config[:log_stream] = STDOUT
14
+ # end
15
+ #
16
+ # ==== Returns
17
+ # nil
18
+ #
19
+ # :api: publicdef use
20
+ def use
21
+ @configuration ||= {}
22
+ yield @configuration
23
+ nil
24
+ end
25
+
26
+ # Retrieve the value of a config entry.
27
+ #
28
+ # ==== Parameters
29
+ # key<Object>:: The key to retrieve the parameter for.
30
+ #
31
+ # ==== Returns
32
+ # Object:: The value of the configuration parameter.
33
+ #
34
+ # :api: public
35
+ def [](key)
36
+ (@configuration ||= setup)[key]
37
+ end
38
+
39
+ # Set the value of a config entry.
40
+ #
41
+ # ==== Parameters
42
+ # key<Object>:: The key to set the parameter for.
43
+ # val<Object>:: The value of the parameter.
44
+ #
45
+ # :api: public
46
+ def []=(key, val)
47
+ (@configuration ||= setup)[key] = val
48
+ end
49
+
50
+ private
51
+
52
+ # Returns the hash of default config values for Merb.
53
+ #
54
+ # ==== Returns
55
+ # Hash:: The defaults for the config.
56
+ #
57
+ # :api: private
58
+ def defaults
59
+ @defaults ||= {
60
+ :hostname => 'localhost',
61
+ :port => 27017,
62
+ :database => 'development'
63
+ }
64
+ end
65
+
66
+ # Sets up the configuration by storing the given settings.
67
+ #
68
+ # ==== Parameters
69
+ # settings<Hash>::
70
+ # Configuration settings to use. These are merged with the defaults.
71
+ #
72
+ # ==== Returns
73
+ # The configuration as a hash.
74
+ #
75
+ # :api: private
76
+ def setup(settings = {})
77
+ @configuration = defaults.merge(settings)
78
+ end
79
+ end
80
+
81
+ end
82
+ end
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
2
2
  s.name = "mordor"
3
3
 
4
4
  # Do not set the version and date field manually, this is done by the release script
5
- s.version = "0.2.6"
5
+ s.version = "0.2.7"
6
6
  s.date = "2012-01-04"
7
7
 
8
8
  s.summary = "mordor"
@@ -29,6 +29,6 @@ Gem::Specification.new do |s|
29
29
 
30
30
  # The files and test_files directives are set automatically by the release script.
31
31
  # Do not change them by hand, but make sure to add the files to the git repository.
32
- s.files = %w(.gitignore Gemfile Gemfile.lock README.md Rakefile lib/mordor.rb lib/mordor/collection.rb lib/mordor/resource.rb lib/mordor/version.rb mordor.gemspec spec/mordor/collection_spec.rb spec/mordor/connection_spec.rb spec/mordor/resource_spec.rb spec/spec.opts spec/spec_helper.rb tasks/github-gem.rake)
32
+ s.files = %w(.gitignore Gemfile Gemfile.lock README.md Rakefile lib/mordor.rb lib/mordor/collection.rb lib/mordor/config.rb lib/mordor/resource.rb lib/mordor/version.rb mordor.gemspec spec/mordor/collection_spec.rb spec/mordor/connection_spec.rb spec/mordor/resource_spec.rb spec/spec.opts spec/spec_helper.rb tasks/github-gem.rake)
33
33
  end
34
34
 
@@ -11,6 +11,6 @@ describe "connecting to mongo" do
11
11
  end
12
12
 
13
13
  it "should select the correct database" do
14
- @db.name.should == Mordor::CONFIG[:database]
14
+ @db.name.should == Mordor::Config[:database]
15
15
  end
16
16
  end
@@ -4,17 +4,11 @@ require 'mongo'
4
4
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
5
5
  require 'mordor'
6
6
 
7
- module Mordor
8
- CONFIG = {
9
- :hostname => 'localhost',
10
- :port => 27017,
11
- :database => 'test'
12
- }
13
- end
7
+ Mordor::Config[:database] = 'test'
14
8
 
15
9
  def clean_sheet
16
- @connection ||= Mongo::Connection.new(Mordor::CONFIG[:hostname], Mordor::CONFIG[:port])
17
- @db ||= @connection[Mordor::CONFIG[:database]]
10
+ @connection ||= Mongo::Connection.new(Mordor::Config[:hostname], Mordor::Config[:port])
11
+ @db ||= @connection[Mordor::Config[:database]]
18
12
 
19
13
  ['TestResource', 'TestTimedResource'].each do |resource|
20
14
  if Object.const_defined?(resource)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mordor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 6
10
- version: 0.2.6
9
+ - 7
10
+ version: 0.2.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jan-Willem Koelewijn
@@ -178,6 +178,7 @@ files:
178
178
  - Rakefile
179
179
  - lib/mordor.rb
180
180
  - lib/mordor/collection.rb
181
+ - lib/mordor/config.rb
181
182
  - lib/mordor/resource.rb
182
183
  - lib/mordor/version.rb
183
184
  - mordor.gemspec