mongoid-sequence2 0.2.0 → 0.2.3

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.
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=