mongoid-sequence2 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/Changelogs.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.2.3
2
+
3
+ * allow configuring Mongoid::Sequence2, now provide the specific custom default storage options for `Mongoid::Sequences`
4
+ * some mistake amend
5
+
1
6
  ## 0.2.0
2
7
 
3
8
  * support to mongoid 3.0 - 4.0. and unit-test is passed
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ #source "https://rubygems.org"
1
2
  source 'http://ruby.taobao.org'
2
3
 
3
4
  gemspec
data/README.md CHANGED
@@ -12,6 +12,17 @@ https://github.com/agile42/mongoid_sequence2/ **from francis**
12
12
 
13
13
  ## Usage
14
14
 
15
+ ### setup
16
+
17
+ since `v0.2.3` you can specific custom default storage options for `Mongoid::Sequences`, eg:
18
+
19
+ #config/initializers/sequence2.rb
20
+ Mongoid::Sequence2.setup do |config|
21
+ config.collection_name = :__sequences
22
+ config.session = :default
23
+ end
24
+
25
+
15
26
  Include `Mongoid::Sequence` in your class and call `sequence(:field)`.
16
27
 
17
28
  Like this:
@@ -0,0 +1,29 @@
1
+ module Mongoid
2
+ module Sequence
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ set_callback :validate, :before, :set_sequence, :unless => :persisted?
7
+ end
8
+
9
+ def self.included(base)
10
+ base.extend(ClassMethods)
11
+ end
12
+
13
+ module ClassMethods
14
+ attr_accessor :sequence_fields
15
+
16
+ def sequence(fieldname)
17
+ self.sequence_fields ||= []
18
+ self.sequence_fields << fieldname
19
+ end
20
+ end
21
+
22
+ def set_sequence
23
+ self.class.sequence_fields.each do |f|
24
+ self[f] = Sequences.get_next_sequence(self.class.name.underscore, f)
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ module Mongoid
2
+ class Sequences
3
+ include Mongoid::Document
4
+ store_in session: "#{Mongoid::Sequence2.session}",
5
+ collection: "#{Mongoid::Sequence2.collection_name}"
6
+
7
+ field :fieldname
8
+ field :seq, type: Integer
9
+
10
+ def self.get_next_sequence(collection, fieldname)
11
+ #Sequences.where(fieldname: "#{collection}_#{fieldname}").find_and_modify({'$inc' => {'seq' => 1}}, {'upsert' => 'true', :new => true}).seq
12
+ self.where(fieldname: "#{collection}_#{fieldname}").find_and_modify({'$inc' => {'seq' => 1}}, {'upsert' => 'true', :new => true}).seq
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
- module Sequence
3
- VERSION = "0.2.0"
2
+ module Sequence2
3
+ VERSION = "0.2.3"
4
4
  end
5
5
  end
@@ -1,44 +1,32 @@
1
- require "mongoid-sequence2/version"
2
1
  require "active_support/concern"
3
2
 
4
- module Mongoid
5
- module Sequence
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- set_callback :validate, :before, :set_sequence, :unless => :persisted?
10
- end
11
-
12
- def self.included(base)
13
- base.extend(ClassMethods)
14
- end
15
-
16
- module ClassMethods
17
- attr_accessor :sequence_fields
18
-
19
- def sequence(fieldname)
20
- self.sequence_fields ||= []
21
- self.sequence_fields << fieldname
22
- end
23
- end
24
-
25
- class Sequences
26
- include Mongoid::Document
27
- store_in collection: "__sequences"
28
-
29
- field :fieldname
30
- field :seq, type: Integer
31
-
32
- def self.get_next_sequence(collection, fieldname)
33
- Sequences.where(fieldname: "#{collection}_#{fieldname}").find_and_modify({'$inc' => {'seq' => 1}}, {'upsert' => 'true', :new => true}).seq
34
- end
35
- end
3
+ require "mongoid-sequence2/version"
4
+ # require "mongoid-sequence2/sequences"
5
+ # require "mongoid-sequence2/sequence"
36
6
 
37
- def set_sequence
38
- self.class.sequence_fields.each do |f|
39
- self[f] = Sequences.get_next_sequence(self.class.name.underscore, f)
40
- end
7
+ module Mongoid
8
+ autoload :Sequence, "mongoid-sequence2/sequence"
9
+ autoload :Sequences, "mongoid-sequence2/sequences"
10
+
11
+ module Sequence2
12
+ # Defines the collection in which the `Mongoid::Sequences` store_in.
13
+ mattr_accessor :collection_name
14
+ @@collection_name = :__sequences
15
+
16
+ # Defines the session in which the `Mongoid::Sequences` store_in.
17
+ mattr_accessor :session
18
+ @@session = :default
19
+ # Allow configuring Mongoid::Sequence2 with a block
20
+ # now provide the specific custom default storage options for `Mongoid::Sequences`
21
+ #
22
+ # Example:
23
+ #
24
+ # Mongoid::Sequence2.setup do |config|
25
+ # config.session = :default
26
+ # config.collection = :__sequences
27
+ # end
28
+ def self.setup
29
+ yield self
41
30
  end
42
-
43
31
  end
44
32
  end
@@ -12,10 +12,11 @@ Gem::Specification.new do |gem|
12
12
  gem.add_dependency("activesupport", "~> 3.1")
13
13
  gem.add_development_dependency("rake", "~> 0.9")
14
14
  gem.add_development_dependency "database_cleaner", "~> 0.9.1"
15
+ gem.add_development_dependency "test-unit", "~> 2.5.5"
15
16
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
17
  gem.files = `git ls-files`.split("\n")
17
18
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
19
  gem.name = "mongoid-sequence2"
19
20
  gem.require_paths = ["lib"]
20
- gem.version = Mongoid::Sequence::VERSION
21
+ gem.version = Mongoid::Sequence2::VERSION
21
22
  end
@@ -78,3 +78,13 @@ test:
78
78
  # low amounts for fast failures.
79
79
  max_retries: 1
80
80
  retry_interval: 0
81
+ custom_session:
82
+ database: mongoid-sequence_test
83
+ hosts:
84
+ - localhost:27017
85
+ options:
86
+ consistency: :strong
87
+ # In the test environment we lower the retries and retry interval to
88
+ # low amounts for fast failures.
89
+ max_retries: 1
90
+ retry_interval: 0
@@ -0,0 +1,83 @@
1
+ require "test_helper"
2
+
3
+ class SetupSessionTest < BaseTest
4
+ self.test_order = :defined
5
+ # http://stackoverflow.com/questions/11185517/why-does-testunit-test-order-not-working-as-expected
6
+
7
+
8
+ def reload_sequences
9
+ Mongoid::Sequences.store_in session: "#{Mongoid::Sequence2.session}",
10
+ collection: "#{Mongoid::Sequence2.collection_name}"
11
+ end
12
+
13
+ def reset_setup
14
+ Mongoid::Sequence2.setup do |config|
15
+ config.collection_name = :__sequences
16
+ config.session = :default
17
+ end
18
+ end
19
+
20
+ def reset_sequences
21
+ reset_setup
22
+ reload_sequences
23
+ end
24
+
25
+ ######test session
26
+ def test_default_session
27
+ reset_setup
28
+
29
+ assert_equal Mongoid::Sequence2.session, :default
30
+ end
31
+
32
+ def test_sequences_default_session
33
+ reset_sequences
34
+
35
+ assert_equal Mongoid::Sequences.mongo_session, Mongoid::Sessions.default
36
+ end
37
+
38
+ def test_custom_session
39
+ Mongoid::Sequence2.setup do |config|
40
+ config.session = :custom_session
41
+ end
42
+ assert_equal Mongoid::Sequence2.session, :custom_session
43
+ end
44
+
45
+ def test_sequences_custom_session
46
+ Mongoid::Sequence2.setup do |config|
47
+ config.session = :custom_session
48
+ end
49
+
50
+ reload_sequences
51
+
52
+ assert_equal Mongoid::Sequences.mongo_session, Mongoid::Sessions.with_name(:custom_session)
53
+ end
54
+
55
+ ######test collection_name
56
+
57
+ def test_default_collection_name
58
+ reset_setup
59
+ assert_equal Mongoid::Sequence2.collection_name, :__sequences
60
+ end
61
+
62
+ def test_sequences_default_collection_name
63
+ reset_sequences
64
+
65
+ assert_equal Mongoid::Sequences.collection_name, :__sequences
66
+ end
67
+
68
+ def test_custom_collection_name
69
+ Mongoid::Sequence2.setup do |config|
70
+ config.collection_name = :sequences
71
+ end
72
+ assert_equal Mongoid::Sequence2.collection_name, :sequences
73
+ end
74
+
75
+ def test_sequences_custom_collection_name
76
+ Mongoid::Sequence2.setup do |config|
77
+ config.collection_name = :sequences
78
+ end
79
+
80
+ reload_sequences
81
+ assert_equal Mongoid::Sequences.collection_name, :sequences
82
+ end
83
+ end
data/test/test_helper.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  require 'rubygems'
2
- require 'test/unit'
3
2
  require "bundler/setup"
4
3
  require "test/unit"
5
4
  require "mongoid"
6
5
  require 'database_cleaner'
7
6
 
8
- require File.expand_path("../../lib/mongoid-sequence2", __FILE__)
7
+ $:.push File.expand_path("../lib", __FILE__)
8
+ require "mongoid-sequence2"
9
+ # require File.expand_path("../../lib/mongoid-sequence2", __FILE__)
9
10
 
10
11
  Mongoid.load!("./test/config/mongoid.yml", :test)
11
12
 
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-sequence2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - jhjguxin
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-05-07 00:00:00.000000000 Z
12
+ date: 2013-05-26 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: mongoid
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -23,6 +25,7 @@ dependencies:
23
25
  type: :runtime
24
26
  prerelease: false
25
27
  version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
26
29
  requirements:
27
30
  - - ! '>='
28
31
  - !ruby/object:Gem::Version
@@ -33,6 +36,7 @@ dependencies:
33
36
  - !ruby/object:Gem::Dependency
34
37
  name: activesupport
35
38
  requirement: !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ~>
38
42
  - !ruby/object:Gem::Version
@@ -40,6 +44,7 @@ dependencies:
40
44
  type: :runtime
41
45
  prerelease: false
42
46
  version_requirements: !ruby/object:Gem::Requirement
47
+ none: false
43
48
  requirements:
44
49
  - - ~>
45
50
  - !ruby/object:Gem::Version
@@ -47,6 +52,7 @@ dependencies:
47
52
  - !ruby/object:Gem::Dependency
48
53
  name: rake
49
54
  requirement: !ruby/object:Gem::Requirement
55
+ none: false
50
56
  requirements:
51
57
  - - ~>
52
58
  - !ruby/object:Gem::Version
@@ -54,6 +60,7 @@ dependencies:
54
60
  type: :development
55
61
  prerelease: false
56
62
  version_requirements: !ruby/object:Gem::Requirement
63
+ none: false
57
64
  requirements:
58
65
  - - ~>
59
66
  - !ruby/object:Gem::Version
@@ -61,6 +68,7 @@ dependencies:
61
68
  - !ruby/object:Gem::Dependency
62
69
  name: database_cleaner
63
70
  requirement: !ruby/object:Gem::Requirement
71
+ none: false
64
72
  requirements:
65
73
  - - ~>
66
74
  - !ruby/object:Gem::Version
@@ -68,10 +76,27 @@ dependencies:
68
76
  type: :development
69
77
  prerelease: false
70
78
  version_requirements: !ruby/object:Gem::Requirement
79
+ none: false
71
80
  requirements:
72
81
  - - ~>
73
82
  - !ruby/object:Gem::Version
74
83
  version: 0.9.1
84
+ - !ruby/object:Gem::Dependency
85
+ name: test-unit
86
+ requirement: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 2.5.5
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 2.5.5
75
100
  description: Mongoid::Sequence2 gives you the ability to specify fields to behave
76
101
  like a sequence number (exactly like the "id" column in conventional SQL flavors).
77
102
  email:
@@ -87,6 +112,8 @@ files:
87
112
  - README.md
88
113
  - Rakefile
89
114
  - lib/mongoid-sequence2.rb
115
+ - lib/mongoid-sequence2/sequence.rb
116
+ - lib/mongoid-sequence2/sequences.rb
90
117
  - lib/mongoid-sequence2/version.rb
91
118
  - mongoid-sequence2.gemspec
92
119
  - test/config/mongoid.yml
@@ -96,30 +123,38 @@ files:
96
123
  - test/models/paranoia_sequenced_model.rb
97
124
  - test/models/second_sequenced_model.rb
98
125
  - test/paranoia_test.rb
126
+ - test/setup_test.rb
99
127
  - test/test_helper.rb
100
128
  - test/uniqueness_test.rb
101
129
  homepage: https://github.com/jhjguxin/mongoid-sequence2
102
130
  licenses: []
103
- metadata: {}
104
131
  post_install_message:
105
132
  rdoc_options: []
106
133
  require_paths:
107
134
  - lib
108
135
  required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
109
137
  requirements:
110
138
  - - ! '>='
111
139
  - !ruby/object:Gem::Version
112
140
  version: '0'
141
+ segments:
142
+ - 0
143
+ hash: -336202797
113
144
  required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
114
146
  requirements:
115
147
  - - ! '>='
116
148
  - !ruby/object:Gem::Version
117
149
  version: '0'
150
+ segments:
151
+ - 0
152
+ hash: -336202797
118
153
  requirements: []
119
154
  rubyforge_project:
120
- rubygems_version: 2.0.3
155
+ rubygems_version: 1.8.25
121
156
  signing_key:
122
- specification_version: 4
157
+ specification_version: 3
123
158
  summary: Specify fields to behave like a sequence number (exactly like the "id" column
124
159
  in conventional SQL flavors).
125
160
  test_files: []
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YzI5ZmZkNzNjNjVmNTUzNjE4NGJmYTQ5YWYxZWNlYmNmMjdhODg4YQ==
5
- data.tar.gz: !binary |-
6
- Y2QyNWU3NGY1MWMwODYwOGI3MzliNjBjMjQ1NWE1ZTU3ZTdlYTYzZg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- YjExYjE3M2E1OTg4Y2RkMTMyZDIwZDA5N2U3ZDM1YjEzOTE4M2I3NzFhNWIw
10
- NzcxZTc5NTMyYmMzODlhZjM0OWI5YzAxMTM3ODFmNDU5NjVkMzM5NTJhMDEx
11
- ZmNmMTEzNzQzZDg3Mjc5OGI0MDQzZDg5YjYxZGQyNjUxMDYwOWI=
12
- data.tar.gz: !binary |-
13
- ZDRhNGQ1YjA1NGZlZjkyMTYxYTZlMGVkNTA4YzViNWIwZWIyNWUwM2NmZGQ1
14
- OTE3NGYzY2RkMmQzYzZmNmViMjNkZmI2NjliZjU0OGUyYmFiN2ZlMTNiM2Qz
15
- MjliYmE3MTI1MmQ1MDhlYmMxZmIzMzM0ZTFhOTQwNWUxYTEyNmI=