mongomodel 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,6 +28,7 @@ module MongoModel
28
28
  autoload :AbstractClass, 'mongomodel/concerns/abstract_class'
29
29
  autoload :ActiveModelCompatibility, 'mongomodel/concerns/activemodel'
30
30
 
31
+ autoload :Reference, 'mongomodel/support/reference'
31
32
  autoload :MongoOptions, 'mongomodel/support/mongo_options'
32
33
  autoload :MongoOrder, 'mongomodel/support/mongo_order'
33
34
  autoload :MongoOperator, 'mongomodel/support/mongo_operator'
@@ -10,8 +10,8 @@ module MongoModel
10
10
  end
11
11
 
12
12
  properties do |association|
13
- property association.foreign_key, String, :internal => true
14
- property association.type_key, String, :internal => true if association.polymorphic?
13
+ property association.foreign_key, Reference, :internal => true
14
+ property association.type_key, Reference, :internal => true if association.polymorphic?
15
15
  end
16
16
 
17
17
  methods do |association|
@@ -6,7 +6,7 @@ module MongoModel
6
6
  end
7
7
 
8
8
  properties do |association|
9
- property association.property_name, Collection[String], :internal => true, :default => []
9
+ property association.property_name, Collection[Reference], :internal => true, :default => []
10
10
  end
11
11
 
12
12
  methods do |association|
@@ -5,7 +5,7 @@ module MongoModel
5
5
 
6
6
  included do
7
7
  undef_method :id if method_defined?(:id)
8
- property :id, String, :as => '_id', :default => lambda { |doc| doc.generate_id }
8
+ property :id, Reference, :as => '_id', :default => lambda { |doc| doc.generate_id }
9
9
 
10
10
  class_inheritable_writer :collection_name
11
11
  end
@@ -1,4 +1,5 @@
1
1
  require 'active_support/core_ext/hash/keys'
2
+ require 'active_support/core_ext/hash/except'
2
3
 
3
4
  module MongoModel
4
5
  class Configuration
@@ -19,13 +20,25 @@ module MongoModel
19
20
  end
20
21
 
21
22
  def establish_connection
22
- Mongo::Connection.new(host, port).db(database)
23
+ @connection ||= Mongo::Connection.new(host, port, connection_options)
24
+ @database = @connection.db(database)
25
+ end
26
+
27
+ def use_database(database)
28
+ @options['database'] = database
29
+ establish_connection
30
+ end
31
+
32
+ def connection_options
33
+ @options.except('host', 'port', 'database').symbolize_keys
23
34
  end
24
35
 
25
36
  DEFAULTS = {
26
- 'host' => 'localhost',
27
- 'port' => 27017,
28
- 'database' => 'mongomodel-default'
37
+ 'host' => 'localhost',
38
+ 'port' => 27017,
39
+ 'database' => 'mongomodel-default',
40
+ 'pool_size' => 5,
41
+ 'timeout' => 5
29
42
  }
30
43
 
31
44
  def self.defaults
@@ -0,0 +1,14 @@
1
+ module MongoModel
2
+ class Reference < String
3
+ def self.cast(value)
4
+ value = value.to_s if value.respond_to?(:to_s)
5
+
6
+ case value
7
+ when "", nil
8
+ nil
9
+ else
10
+ new(value)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module MongoModel
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongomodel}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sam Pohlenz"]
12
- s.date = %q{2010-04-21}
12
+ s.date = %q{2010-04-26}
13
13
  s.default_executable = %q{console}
14
14
  s.description = %q{MongoModel is a MongoDB ORM for Ruby/Rails similar to ActiveRecord and DataMapper.}
15
15
  s.email = %q{sam@sampohlenz.com}
@@ -75,6 +75,7 @@ Gem::Specification.new do |s|
75
75
  "lib/mongomodel/support/mongo_operator.rb",
76
76
  "lib/mongomodel/support/mongo_options.rb",
77
77
  "lib/mongomodel/support/mongo_order.rb",
78
+ "lib/mongomodel/support/reference.rb",
78
79
  "lib/mongomodel/support/scope.rb",
79
80
  "lib/mongomodel/support/scope/dynamic_finders.rb",
80
81
  "lib/mongomodel/support/scope/finder_methods.rb",
@@ -21,7 +21,7 @@ Spec::Runner.configure do |config|
21
21
  include DefineClass
22
22
 
23
23
  config.before(:all) do
24
- MongoModel.configuration = { 'database' => 'mongomodel-specs' }
24
+ MongoModel.configuration.use_database('mongomodel-specs')
25
25
  end
26
26
 
27
27
  config.before(:each) do
@@ -32,6 +32,10 @@ module DocumentFinderStubs
32
32
  yield if block_given?
33
33
  end
34
34
 
35
+ def stub_delete
36
+ collection.stub!(:remove)
37
+ end
38
+
35
39
  def should_delete(conditions={})
36
40
  selector, options = MongoModel::MongoOptions.new(self, :conditions => conditions).to_a
37
41
  collection.should_receive(:remove).once.with(selector)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 1
9
- version: 0.2.1
8
+ - 2
9
+ version: 0.2.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sam Pohlenz
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-21 00:00:00 +09:30
17
+ date: 2010-04-26 00:00:00 +09:30
18
18
  default_executable: console
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -141,6 +141,7 @@ files:
141
141
  - lib/mongomodel/support/mongo_operator.rb
142
142
  - lib/mongomodel/support/mongo_options.rb
143
143
  - lib/mongomodel/support/mongo_order.rb
144
+ - lib/mongomodel/support/reference.rb
144
145
  - lib/mongomodel/support/scope.rb
145
146
  - lib/mongomodel/support/scope/dynamic_finders.rb
146
147
  - lib/mongomodel/support/scope/finder_methods.rb