mongoid-autoinc 0.3.2 → 0.4.0

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.
Files changed (4) hide show
  1. data/README.rdoc +9 -0
  2. data/lib/autoinc.rb +12 -2
  3. data/lib/autoinc/version.rb +1 -1
  4. metadata +25 -19
data/README.rdoc CHANGED
@@ -58,6 +58,10 @@ You can scope on document fields. For example:
58
58
 
59
59
  end
60
60
 
61
+ Scope can also be a Proc:
62
+
63
+ increments :number, :scope => lambda { patient.name }
64
+
61
65
  === Custom Increment Trigger
62
66
 
63
67
  You can trigger the assignment of an increment field manually by passing:
@@ -89,6 +93,11 @@ This allows for more flexible assignment of your increment number:
89
93
  $ bundle install
90
94
  $ bundle exec spec
91
95
 
96
+ == Contributions
97
+
98
+ Thanks to Johnny Shields (@johnnyshields) for implementing proc support to scopes
99
+
100
+
92
101
  == Copyright
93
102
 
94
103
  See LICENSE for details
data/lib/autoinc.rb CHANGED
@@ -43,13 +43,23 @@ module Mongoid
43
43
  end
44
44
 
45
45
  def increment!(field, options)
46
- scope_key = options[:scope] ? send(options[:scope]) : nil
46
+ scope_key = options[:scope] ? evaluate_scope(options[:scope]) : nil
47
47
  write_attribute(
48
- field.to_sym, Mongoid::Autoinc::Incrementor.new(
48
+ field.to_sym, Mongoid::Autoinc::Incrementor.new(
49
49
  self.class.model_name, field, scope_key).inc
50
50
  )
51
51
  end
52
52
 
53
+ def evaluate_scope(scope)
54
+ if scope.is_a? Symbol
55
+ send(scope)
56
+ elsif scope.is_a? Proc
57
+ instance_exec &scope
58
+ else
59
+ raise 'scope is not a Symbol or a Proc'
60
+ end
61
+ end
62
+
53
63
  end
54
64
 
55
65
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Autoinc
3
- VERSION = "0.3.2"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-autoinc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
5
4
  prerelease:
5
+ version: 0.4.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Robert Beekman
@@ -11,11 +11,17 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-02-18 00:00:00.000000000 Z
14
+ date: 2013-03-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: mongoid
17
+ version_requirements: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
22
+ none: false
18
23
  prerelease: false
24
+ name: mongoid
19
25
  requirement: !ruby/object:Gem::Requirement
20
26
  requirements:
21
27
  - - ~>
@@ -23,15 +29,15 @@ dependencies:
23
29
  version: '3.0'
24
30
  none: false
25
31
  type: :runtime
32
+ - !ruby/object:Gem::Dependency
26
33
  version_requirements: !ruby/object:Gem::Requirement
27
34
  requirements:
28
- - - ~>
35
+ - - ! '>='
29
36
  - !ruby/object:Gem::Version
30
- version: '3.0'
37
+ version: '0'
31
38
  none: false
32
- - !ruby/object:Gem::Dependency
33
- name: activesupport
34
39
  prerelease: false
40
+ name: activesupport
35
41
  requirement: !ruby/object:Gem::Requirement
36
42
  requirements:
37
43
  - - ! '>='
@@ -39,15 +45,15 @@ dependencies:
39
45
  version: '0'
40
46
  none: false
41
47
  type: :runtime
48
+ - !ruby/object:Gem::Dependency
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - ! '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
54
  none: false
48
- - !ruby/object:Gem::Dependency
49
- name: rake
50
55
  prerelease: false
56
+ name: rake
51
57
  requirement: !ruby/object:Gem::Requirement
52
58
  requirements:
53
59
  - - ! '>='
@@ -55,15 +61,15 @@ dependencies:
55
61
  version: '0'
56
62
  none: false
57
63
  type: :runtime
64
+ - !ruby/object:Gem::Dependency
58
65
  version_requirements: !ruby/object:Gem::Requirement
59
66
  requirements:
60
67
  - - ! '>='
61
68
  - !ruby/object:Gem::Version
62
69
  version: '0'
63
70
  none: false
64
- - !ruby/object:Gem::Dependency
65
- name: foreman
66
71
  prerelease: false
72
+ name: foreman
67
73
  requirement: !ruby/object:Gem::Requirement
68
74
  requirements:
69
75
  - - ! '>='
@@ -71,15 +77,15 @@ dependencies:
71
77
  version: '0'
72
78
  none: false
73
79
  type: :development
80
+ - !ruby/object:Gem::Dependency
74
81
  version_requirements: !ruby/object:Gem::Requirement
75
82
  requirements:
76
83
  - - ! '>='
77
84
  - !ruby/object:Gem::Version
78
85
  version: '0'
79
86
  none: false
80
- - !ruby/object:Gem::Dependency
81
- name: rspec
82
87
  prerelease: false
88
+ name: rspec
83
89
  requirement: !ruby/object:Gem::Requirement
84
90
  requirements:
85
91
  - - ! '>='
@@ -87,12 +93,6 @@ dependencies:
87
93
  version: '0'
88
94
  none: false
89
95
  type: :development
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- none: false
96
96
  description: Think auto incrementing field from MySQL for mongoid.
97
97
  email:
98
98
  - robert@80beans.com
@@ -117,12 +117,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
117
  - - ! '>='
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
+ segments:
121
+ - 0
122
+ hash: -1490664978926103703
120
123
  none: false
121
124
  required_rubygems_version: !ruby/object:Gem::Requirement
122
125
  requirements:
123
126
  - - ! '>='
124
127
  - !ruby/object:Gem::Version
125
128
  version: '0'
129
+ segments:
130
+ - 0
131
+ hash: -1490664978926103703
126
132
  none: false
127
133
  requirements: []
128
134
  rubyforge_project: