mongomapper_plugins 0.0.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,19 +11,16 @@ module MongoMapper
11
11
  end
12
12
  end
13
13
 
14
- module InstanceMethods
15
- private
16
- def generate_document_id(options={})
17
- while true
18
- oldest_number = self.class.fields(:_id).sort([[:_id, :descending]]).first.try(:id)
19
- self.id = oldest_number.to_i + 1
20
- begin
21
- break if collection.insert({:_id => id}, :safe => true)
22
- rescue Mongo::OperationFailure => e
23
- #Ignored, trying to get the next key
24
- end
25
- end
14
+ def generate_document_id(options={})
15
+ while true
16
+ oldest_number = self.class.fields(:_id).sort([[:_id, :descending]]).first.try(:id)
17
+ self.id = oldest_number.to_i + 1
18
+ begin
19
+ break if collection.insert({:_id => id}, :safe => true)
20
+ rescue Mongo::OperationFailure => e
21
+ #Ignored, trying to get the next key
26
22
  end
23
+ end
27
24
  end
28
25
  end
29
26
  end
@@ -6,85 +6,83 @@ module MongoMapper
6
6
  def self.configure(mod)
7
7
  end
8
8
 
9
- module InstanceMethods
10
- def set(hash)
11
- hash.each do |key, value|
12
- obj, method = get_obj_and_method(key)
13
- obj.send("#{method}=", value)
14
- end
15
- super hash_to_mongo(hash)
9
+ def set(hash)
10
+ hash.each do |key, value|
11
+ obj, method = get_obj_and_method(key)
12
+ obj.send("#{method}=", value)
16
13
  end
14
+ super hash_to_mongo(hash)
15
+ end
17
16
 
18
- def increment(hash)
19
- hash.each do |key, value|
20
- obj, method = get_obj_and_method(key)
21
- val = obj.send(method)
22
- obj.send("#{method}=", val + value)
23
- end
24
- super hash_to_mongo(hash)
17
+ def increment(hash)
18
+ hash.each do |key, value|
19
+ obj, method = get_obj_and_method(key)
20
+ val = obj.send(method)
21
+ obj.send("#{method}=", val + value)
25
22
  end
23
+ super hash_to_mongo(hash)
24
+ end
26
25
 
27
- def decrement(hash)
28
- hash.each do |key, value|
29
- obj, method = get_obj_and_method(key)
30
- val = obj.send(method)
31
- obj.send("#{method}=", val - value)
32
- end
33
- super hash_to_mongo(hash)
26
+ def decrement(hash)
27
+ hash.each do |key, value|
28
+ obj, method = get_obj_and_method(key)
29
+ val = obj.send(method)
30
+ obj.send("#{method}=", val - value)
34
31
  end
32
+ super hash_to_mongo(hash)
33
+ end
35
34
 
36
- def push(hash)
37
- hash.each do |key, value|
38
- obj, method = get_obj_and_method(key)
39
- obj = obj.send(method)
40
- obj.push value
41
- end
42
- super hash_to_mongo(hash)
35
+ def push(hash)
36
+ hash.each do |key, value|
37
+ obj, method = get_obj_and_method(key)
38
+ obj = obj.send(method)
39
+ obj.push value
43
40
  end
41
+ super hash_to_mongo(hash)
42
+ end
44
43
 
45
- def pull(hash)
46
- hash.each do |key, value|
47
- obj, method = get_obj_and_method(key)
48
- obj = obj.send(method)
49
- obj.delete_if { |e| e == value }
50
- end
51
- super hash_to_mongo(hash)
44
+ def pull(hash)
45
+ hash.each do |key, value|
46
+ obj, method = get_obj_and_method(key)
47
+ obj = obj.send(method)
48
+ obj.delete_if { |e| e == value }
52
49
  end
50
+ super hash_to_mongo(hash)
51
+ end
53
52
 
54
- def add_to_set(hash)
55
- hash.each do |key, value|
56
- obj, method = get_obj_and_method(key)
57
- obj = obj.send(method)
58
- obj.push(value) unless obj.include?(value)
59
- end
60
- super hash_to_mongo(hash)
53
+ def add_to_set(hash)
54
+ hash.each do |key, value|
55
+ obj, method = get_obj_and_method(key)
56
+ obj = obj.send(method)
57
+ obj.push(value) unless obj.include?(value)
61
58
  end
62
- alias push_uniq add_to_set
59
+ super hash_to_mongo(hash)
60
+ end
61
+ alias push_uniq add_to_set
63
62
 
64
- private
65
- def get_obj_and_method(key)
66
- children = key.to_s.split(/\./)
67
- method = children.pop
63
+ private
64
+ def get_obj_and_method(key)
65
+ children = key.to_s.split(/\./)
66
+ method = children.pop
68
67
 
69
- obj = self
70
- children.each do |child|
71
- obj = obj.send(child)
72
- end
68
+ obj = self
69
+ children.each do |child|
70
+ obj = obj.send(child)
71
+ end
73
72
 
74
- [obj, method]
75
- end
73
+ [obj, method]
74
+ end
76
75
 
77
- def hash_to_mongo(arg)
78
- if arg.is_a?(Hash)
79
- keys = arg.keys
80
- keys.each do |k|
81
- arg[k] = hash_to_mongo(arg[k])
82
- end
83
- arg
84
- else
85
- arg && arg.respond_to?(:to_mongo) ? arg.to_mongo : arg
86
- end
76
+ def hash_to_mongo(arg)
77
+ if arg.is_a?(Hash)
78
+ keys = arg.keys
79
+ keys.each do |k|
80
+ arg[k] = hash_to_mongo(arg[k])
87
81
  end
82
+ arg
83
+ else
84
+ arg && arg.respond_to?(:to_mongo) ? arg.to_mongo : arg
85
+ end
88
86
  end
89
87
  end
90
88
  end
@@ -12,18 +12,24 @@ module MongoMapper
12
12
 
13
13
  module OverriddenMethods
14
14
  private
15
- def update(options={})
16
- version = self._version
15
+ # Overriding save_to_collection in lib/mongo_mapper/plugins/querying.rb
16
+ def save_to_collection(options={})
17
+ if persisted?
18
+ @_new = false
19
+ old_version = self._version
17
20
  self._version += 1
18
- ret = collection.update({:_id => _id, :_version => version},
19
- to_mongo,
20
- :safe => true)
21
+ ret = collection.update({:_id => _id, :_version => old_version},
22
+ to_mongo,
23
+ :safe => true)
21
24
  if ret['n'] == 0
22
25
  self._version -= 1
23
26
  raise InvalidVersion
24
27
  end
25
28
  ret['err'].nil?
29
+ else
30
+ super
26
31
  end
32
+ end
27
33
  end
28
34
 
29
35
  class InvalidVersion < StandardError; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongomapper_plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-02-28 00:00:00.000000000 +02:00
13
- default_executable:
12
+ date: 2011-02-28 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
- requirement: &2153690340 !ruby/object:Gem::Requirement
16
+ requirement: &70105439900920 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ! '>='
@@ -22,7 +21,7 @@ dependencies:
22
21
  version: '1.0'
23
22
  type: :development
24
23
  prerelease: false
25
- version_requirements: *2153690340
24
+ version_requirements: *70105439900920
26
25
  description: A repository of MongoMapper plugins.
27
26
  email: andrew@andrewtimberlake.com
28
27
  executables: []
@@ -38,7 +37,6 @@ files:
38
37
  - lib/mongomapper_plugins/railtie.rb
39
38
  - lib/mongomapper_plugins.rb
40
39
  - README.rdoc
41
- has_rdoc: true
42
40
  homepage: http://github.com/andrewtimberlake/mongomapper_plugins
43
41
  licenses: []
44
42
  post_install_message:
@@ -60,8 +58,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
58
  version: '0'
61
59
  requirements: []
62
60
  rubyforge_project:
63
- rubygems_version: 1.6.2
61
+ rubygems_version: 1.8.15
64
62
  signing_key:
65
63
  specification_version: 3
66
64
  summary: A repository of MongoMapper plugins.
67
65
  test_files: []
66
+ has_rdoc: