active_mongo 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
data/active_mongo.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{active_mongo}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mantas Masalskis"]
12
- s.date = %q{2010-01-10}
12
+ s.date = %q{2010-02-05}
13
13
  s.description = %q{Schemaless Mongo ORM for Rails 3.0}
14
14
  s.email = %q{mantas@idev.lt}
15
15
  s.extra_rdoc_files = [
data/lib/active_mongo.rb CHANGED
@@ -4,9 +4,17 @@ include Mongo
4
4
 
5
5
  config = YAML::load(File.open("#{RAILS_ROOT}/config/mongo.yml"))[Rails.env]
6
6
 
7
- $mongo_conn = Connection.new(config["host"], config["port"], :pool_size => 5, :timeout => 5)
7
+ $mongo_conn = Connection.new(config["host"], config["port"], :pool_size => 10, :timeout => 2)
8
8
  $mongo_db = $mongo_conn.db(config["database"])
9
9
 
10
+ if defined?(PhusionPassenger)
11
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
12
+ if forked
13
+ $mongo_db.connect_to_master # Call db.connect_to_master to reconnect here
14
+ end
15
+ end
16
+ end
17
+
10
18
  if config["user"]
11
19
  if !$mongo_db.authenticate(config["user"], config["password"])
12
20
  puts "Wrong MongoDB user and/or password!!!"
@@ -28,11 +28,12 @@ ActiveMongo::Base.class_eval do
28
28
  end
29
29
  end
30
30
 
31
- def self.find(attrs = {})
32
- if attrs.class == String || attrs.class == Mongo::ObjectID
33
- id = Mongo::ObjectID.from_string(attrs) if attrs.class == String
31
+ # def self.find(attrs = {})
32
+ def self.find(selector = nil, *attrs)
33
+ if selector.class == String || selector.class == Mongo::ObjectID
34
+ id = Mongo::ObjectID.from_string(selector) if selector.class == String
34
35
 
35
- id ||= attrs
36
+ id ||= selector
36
37
 
37
38
  obj = self.collection.find_one(id)
38
39
 
@@ -42,11 +43,19 @@ ActiveMongo::Base.class_eval do
42
43
 
43
44
  return model
44
45
  else
45
- attrs = self.scope.merge(attrs) if self.scope
46
+ selector = self.scope.merge(selector || {}) if self.scope
46
47
 
47
48
  ret = []
48
49
 
49
- self.collection.find(attrs).to_a.map do |obj|
50
+ selector ||= {}
51
+
52
+ selector.each do |key, value|
53
+ if key.to_s.match(/\_id$/) && value.class == String
54
+ selector[key] = Mongo::ObjectID.from_string(value)
55
+ end
56
+ end
57
+
58
+ self.collection.find(selector, attrs[0] || {}).to_a.map do |obj|
50
59
  model = eval(self.name || @name).new
51
60
 
52
61
  obj.each {|key, value| model.set_var(key, value) }
@@ -8,12 +8,16 @@ module ActiveMongo
8
8
  def internal_has_manies_set(name, attrs)
9
9
  @@internal_has_manies ||= {}
10
10
 
11
- @@internal_has_manies[name.to_sym] = attrs if @@internal_has_manies[name].nil?
11
+ name = self.name.to_s+'___'+name.to_s
12
+
13
+ @@internal_has_manies[name.to_sym] = attrs if @@internal_has_manies[name.to_sym].nil?
12
14
  end
13
15
 
14
16
  def internal_has_manies_get(name)
15
17
  @@internal_has_manies ||= {}
16
18
 
19
+ name = self.name.to_s+'___'+name.to_s
20
+
17
21
  @@internal_has_manies[name.to_sym]
18
22
  end
19
23
 
@@ -24,7 +28,7 @@ module ActiveMongo
24
28
  return false if self.new_record?
25
29
 
26
30
  attrs[:class_name] ||= name.to_s.classify
27
- attrs[:foreign_key] ||= name.to_s.singularize.underscore+"_id"
31
+ attrs[:foreign_key] ||= self.class.name.to_s.singularize.underscore+"_id"
28
32
 
29
33
  return eval(attrs[:class_name]).with_scope(attrs[:foreign_key] => self._id )
30
34
  end
@@ -2,7 +2,7 @@ ActiveMongo::Base.class_eval do
2
2
  def initialize(*attr)
3
3
  @vars = []
4
4
 
5
- attrs = attr[0] || {}
5
+ attrs = (attr[0] || {})
6
6
 
7
7
  if self.class.attr_accessible_get.any?
8
8
  attrs.delete_if {|key, value| !self.class.attr_accessible_get.include?(key.to_sym) }
@@ -28,6 +28,13 @@ ActiveMongo::Base.class_eval do
28
28
  h[var] = instance_variable_get("@#{var}")
29
29
  end
30
30
 
31
+ h.each do |key, value|
32
+ if key.to_s.match(/\_id$/) && value.class == String
33
+ h[key] = Mongo::ObjectID.from_string(value)
34
+ end
35
+ end
36
+
37
+
31
38
  return h
32
39
  end
33
40
 
@@ -117,12 +124,12 @@ ActiveMongo::Base.class_eval do
117
124
  return self
118
125
  end
119
126
 
120
- def unset(var)
127
+ def unset(var, do_not_save = false)
121
128
  self.set_var(var, nil)
122
129
 
123
130
  @vars.delete var.to_sym
124
131
 
125
- return false if self.new_record?
132
+ return false if self.new_record? || do_not_save
126
133
 
127
134
  hash = self.class.collection.find_one self._id
128
135
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mantas Masalskis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-10 00:00:00 +00:00
12
+ date: 2010-02-05 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies: []
15
15