mongoid_collection_snapshot 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 041a83b26ca092439e83e0dd525c73d08ece188a
4
- data.tar.gz: 4a5e32a1d3f3809279fbb0747988bde7f254db3b
3
+ metadata.gz: ee0eb2dd2be3c1d026371d32ebde78fccc17f5e2
4
+ data.tar.gz: 55f375b7f5e03c0c81bb42b063f4ef395f2c6865
5
5
  SHA512:
6
- metadata.gz: b889d8da972a015996384bdf38f2bbe2b53b025efb716a95d55ab88a429e9268dd5cbbdd045edc84fbdbfd34ab694190bcb0554e57c0c3a48802d84393fed2b6
7
- data.tar.gz: 2945f8661a3dd9eb70795d79cca5efae7a925a3454a6e94ffe607ce3dd81816055a90ecd4cf2a74b9b7d2f9079776aebaa03fa21d38ec529f944468f11354ada
6
+ metadata.gz: 69524590f00970250e79cfc7d7952298c82ab312a1e32ed1f2c57457b5787f80ab3a9c57a81fb111e3c41469704cd0057b45fddb4fdaede2390f4a7976f4458a
7
+ data.tar.gz: cceda5bc748e34e4f528880023d5f2067110ac21188a9df969c2dea25951e620b84455c382769ddd5363e79cb5ecbf17156383c889689eb451c3a24988ab92cf
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
1
  --color
2
- --format=progress
2
+ --format=documentation
@@ -9,6 +9,7 @@ rvm:
9
9
  env:
10
10
  - MONGOID_VERSION=3
11
11
  - MONGOID_VERSION=4
12
+ - MONGOID_VERSION=5
12
13
 
13
14
  language: ruby
14
15
 
@@ -1,6 +1,9 @@
1
1
  Next Release
2
2
  ------------
3
3
 
4
+ * Compatibility with Mongoid 5 - [@dblock](https://github.com/dblock).
5
+ * Your contribution here.
6
+
4
7
  1.1.0
5
8
  -----
6
9
 
data/Gemfile CHANGED
@@ -1,6 +1,11 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- case version = ENV['MONGOID_VERSION'] || '~> 4.0'
3
+ gemspec
4
+
5
+ case version = ENV['MONGOID_VERSION'] || '~> 5.0'
6
+ when /5/
7
+ gem 'mongoid', '~> 5.0'
8
+ gem 'mongoid-slug', github: 'dblock/mongoid-slug', branch: 'mongoid-5'
4
9
  when /4/
5
10
  gem 'mongoid', '~> 4.0'
6
11
  when /3/
@@ -9,8 +14,6 @@ else
9
14
  gem 'mongoid', version
10
15
  end
11
16
 
12
- gem 'mongoid_slug'
13
-
14
17
  group :development, :test do
15
18
  gem 'rspec', '~> 3.1'
16
19
  gem 'rake'
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Mongoid Collection Snapshot
2
2
  ===========================
3
3
 
4
- Easy maintenance of collections of processed data in MongoDB with the Mongoid 3.x ODM.
4
+ Easy maintenance of collections of processed data in MongoDB with Mongoid 3, 4 and 5.
5
5
 
6
6
  [![Build Status](https://travis-ci.org/aaw/mongoid_collection_snapshot.svg)](https://travis-ci.org/aaw/mongoid_collection_snapshot)
7
7
 
@@ -48,7 +48,7 @@ class AverageArtistPrice
48
48
  EOS
49
49
 
50
50
  Artwork.map_reduce(map, reduce).out(inline: 1).each do |doc|
51
- collection_snapshot.insert(
51
+ collection_snapshot.insert_one(
52
52
  artist_id: doc['_id']['artist_id'],
53
53
  count: doc['value']['count'],
54
54
  sum: doc['value']['sum']
@@ -190,8 +190,8 @@ class ArtistStats
190
190
  end
191
191
 
192
192
  def self.snapshot_session
193
- @@snapshot_session ||= Moped::Session.new(['127.0.0.1:27017']).tap do |s|
194
- s.use :alternate_db
193
+ @@snapshot_session ||= Mongo::Client.new('mongodb://localhost:27017').tap do |c|
194
+ c.use :alternate_db
195
195
  end
196
196
  end
197
197
  end
data/Rakefile CHANGED
@@ -19,7 +19,6 @@ require 'rspec/core'
19
19
  require 'rspec/core/rake_task'
20
20
  RSpec::Core::RakeTask.new(:spec) do |spec|
21
21
  spec.pattern = FileList['spec/**/*_spec.rb']
22
- spec.rspec_opts = '--color --format progress'
23
22
  end
24
23
 
25
24
  task default: :spec
@@ -35,11 +35,19 @@ module Mongoid
35
35
  collection_name = collection_snapshot(name).name
36
36
  klass = Class.new do
37
37
  include Mongoid::Document
38
- cattr_accessor :mongo_session
38
+ if Mongoid::Compatibility::Version::mongoid5?
39
+ cattr_accessor :mongo_client
40
+ else
41
+ cattr_accessor :mongo_session
42
+ end
39
43
  instance_eval(&document_block) if document_block
40
44
  store_in collection: collection_name
41
45
  end
42
- klass.mongo_session = snapshot_session
46
+ if Mongoid::Compatibility::Version.mongoid5?
47
+ klass.mongo_client = snapshot_session
48
+ else
49
+ klass.mongo_session = snapshot_session
50
+ end
43
51
  Object.const_set(class_name, klass)
44
52
  klass
45
53
  end
@@ -66,7 +74,8 @@ module Mongoid
66
74
  end
67
75
 
68
76
  def drop_snapshot_collections
69
- snapshot_session.collections.each do |collection|
77
+ collections = Mongoid::Compatibility::Version.mongoid5? ? snapshot_session.database.collections : snapshot_session.collections
78
+ collections.each do |collection|
70
79
  collection.drop if collection.name =~ /^#{self.collection.name}\.([^\.]+\.)?#{slug}$/
71
80
  end
72
81
  end
@@ -83,7 +92,7 @@ module Mongoid
83
92
 
84
93
  # Override to supply custom database connection for snapshots
85
94
  def snapshot_session
86
- Mongoid.default_session
95
+ Mongoid::Compatibility::Version.mongoid5? ? Mongoid.default_client : Mongoid.default_session
87
96
  end
88
97
  end
89
98
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module CollectionSnapshot
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -14,5 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.licenses = ['MIT']
15
15
  s.summary = 'Easy maintenence of collections of processed data in MongoDB with the Mongoid ODM.'
16
16
  s.add_dependency 'mongoid', '>= 3.0'
17
- s.add_dependency 'mongoid_slug'
17
+ s.add_dependency 'mongoid-compatibility'
18
+ s.add_dependency 'mongoid-slug'
18
19
  end
@@ -27,11 +27,19 @@ class AverageArtistPrice
27
27
  EOS
28
28
 
29
29
  Artwork.map_reduce(map, reduce).out(inline: 1).each do |doc|
30
- collection_snapshot.insert(
31
- artist_id: doc['_id']['artist_id'],
32
- count: doc['value']['count'],
33
- sum: doc['value']['sum']
34
- )
30
+ if Mongoid::Compatibility::Version.mongoid5?
31
+ collection_snapshot.insert_one(
32
+ artist_id: doc['_id']['artist_id'],
33
+ count: doc['value']['count'],
34
+ sum: doc['value']['sum']
35
+ )
36
+ else
37
+ collection_snapshot.insert(
38
+ artist_id: doc['_id']['artist_id'],
39
+ count: doc['value']['count'],
40
+ sum: doc['value']['sum']
41
+ )
42
+ end
35
43
  end
36
44
  end
37
45
 
@@ -2,9 +2,7 @@ class CustomConnectionSnapshot
2
2
  include Mongoid::CollectionSnapshot
3
3
 
4
4
  def self.snapshot_session
5
- @snapshot_session ||= Moped::Session.new(['127.0.0.1:27017']).tap do |session|
6
- session.use :snapshot_test
7
- end
5
+ @snapshot_session ||= new_snapshot_session
8
6
  end
9
7
 
10
8
  def snapshot_session
@@ -12,7 +10,26 @@ class CustomConnectionSnapshot
12
10
  end
13
11
 
14
12
  def build
15
- collection_snapshot.insert('name' => 'foo')
16
- collection_snapshot('foo').insert('name' => 'bar')
13
+ if Mongoid::Compatibility::Version.mongoid5?
14
+ collection_snapshot.insert_one('name' => 'foo')
15
+ collection_snapshot('foo').insert_one('name' => 'bar')
16
+ else
17
+ collection_snapshot.insert('name' => 'foo')
18
+ collection_snapshot('foo').insert('name' => 'bar')
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def self.new_snapshot_session
25
+ if Mongoid::Compatibility::Version.mongoid5?
26
+ Mongo::Client.new('mongodb://localhost:27017').tap do |client|
27
+ client.use :snapshot_test
28
+ end
29
+ else
30
+ Moped::Session.new(['127.0.0.1:27017']).tap do |session|
31
+ session.use :snapshot_test
32
+ end
33
+ end
17
34
  end
18
35
  end
@@ -17,9 +17,15 @@ class MultiCollectionSnapshot
17
17
  end
18
18
 
19
19
  def build
20
- collection_snapshot('foo').insert('name' => 'foo!', count: 1)
21
- collection_snapshot('bar').insert('name' => 'bar!', number: 2)
22
- collection_snapshot('baz').insert('name' => 'baz!', digit: 3)
20
+ if Mongoid::Compatibility::Version.mongoid5?
21
+ collection_snapshot('foo').insert_one('name' => 'foo!', count: 1)
22
+ collection_snapshot('bar').insert_one('name' => 'bar!', number: 2)
23
+ collection_snapshot('baz').insert_one('name' => 'baz!', digit: 3)
24
+ else
25
+ collection_snapshot('foo').insert('name' => 'foo!', count: 1)
26
+ collection_snapshot('bar').insert('name' => 'bar!', number: 2)
27
+ collection_snapshot('baz').insert('name' => 'baz!', digit: 3)
28
+ end
23
29
  end
24
30
 
25
31
  def names
@@ -75,22 +75,31 @@ module Mongoid
75
75
 
76
76
  it 'safely cleans up all collections used by the snapshot' do
77
77
  # Create some collections with names close to the snapshots we'll create
78
- Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.do.not_delete"].insert('a' => 1)
79
- Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.snapshorty"].insert('a' => 1)
80
- Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.hello.1"].insert('a' => 1)
78
+ if Mongoid::Compatibility::Version.mongoid5?
79
+ Mongoid.default_client["#{MultiCollectionSnapshot.collection.name}.do.not_delete"].insert_one('a' => 1)
80
+ Mongoid.default_client["#{MultiCollectionSnapshot.collection.name}.snapshorty"].insert_one('a' => 1)
81
+ Mongoid.default_client["#{MultiCollectionSnapshot.collection.name}.hello.1"].insert_one('a' => 1)
82
+ else
83
+ Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.do.not_delete"].insert('a' => 1)
84
+ Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.snapshorty"].insert('a' => 1)
85
+ Mongoid.default_session["#{MultiCollectionSnapshot.collection.name}.hello.1"].insert('a' => 1)
86
+ end
81
87
 
82
88
  MultiCollectionSnapshot.create
83
- before_create = Mongoid.default_session.collections.map(&:name)
89
+ collections = Mongoid::Compatibility::Version.mongoid5? ? Mongoid.default_client.database.collections : Mongoid.default_session.collections
90
+ before_create = collections.map(&:name)
84
91
  expect(before_create.length).to be > 0
85
92
 
86
93
  Timecop.travel(1.second.from_now)
87
94
  MultiCollectionSnapshot.create
88
- after_create = Mongoid.default_session.collections.map(&:name)
95
+ collections = Mongoid::Compatibility::Version.mongoid5? ? Mongoid.default_client.database.collections : Mongoid.default_session.collections
96
+ after_create = collections.map(&:name)
89
97
  collections_created = (after_create - before_create).sort
90
98
  expect(collections_created.length).to eq(3)
91
99
 
92
100
  MultiCollectionSnapshot.latest.destroy
93
- after_destroy = Mongoid.default_session.collections.map(&:name)
101
+ collections = Mongoid::Compatibility::Version.mongoid5? ? Mongoid.default_client.database.collections : Mongoid.default_session.collections
102
+ after_destroy = collections.map(&:name)
94
103
  collections_destroyed = (after_create - after_destroy).sort
95
104
  expect(collections_created).to eq(collections_destroyed)
96
105
  end
@@ -98,9 +107,17 @@ module Mongoid
98
107
 
99
108
  context 'with a custom snapshot connection' do
100
109
  around(:each) do |example|
101
- CustomConnectionSnapshot.snapshot_session.drop
110
+ if Mongoid::Compatibility::Version.mongoid5?
111
+ CustomConnectionSnapshot.snapshot_session.database.drop
112
+ else
113
+ CustomConnectionSnapshot.snapshot_session.drop
114
+ end
102
115
  example.run
103
- CustomConnectionSnapshot.snapshot_session.drop
116
+ if Mongoid::Compatibility::Version.mongoid5?
117
+ CustomConnectionSnapshot.snapshot_session.database.drop
118
+ else
119
+ CustomConnectionSnapshot.snapshot_session.drop
120
+ end
104
121
  end
105
122
 
106
123
  it 'builds snapshot in custom database' do
@@ -109,14 +126,19 @@ module Mongoid
109
126
  "#{CustomConnectionSnapshot.collection.name}.foo.#{snapshot.slug}",
110
127
  "#{CustomConnectionSnapshot.collection.name}.#{snapshot.slug}"
111
128
  ].each do |collection_name|
112
- expect(Mongoid.default_session[collection_name].find.count).to eq(0)
129
+ session = Mongoid::Compatibility::Version.mongoid5? ? Mongoid.default_client : Mongoid.default_session
130
+ expect(session[collection_name].find.count).to eq(0)
113
131
  expect(CustomConnectionSnapshot.snapshot_session[collection_name].find.count).to eq(1)
114
132
  end
115
133
  end
116
134
 
117
135
  context '#documents' do
118
136
  it 'uses the custom session' do
119
- expect(CustomConnectionSnapshot.new.documents.mongo_session).to eq CustomConnectionSnapshot.snapshot_session
137
+ if Mongoid::Compatibility::Version.mongoid5?
138
+ expect(CustomConnectionSnapshot.new.documents.mongo_client).to eq CustomConnectionSnapshot.snapshot_session
139
+ else
140
+ expect(CustomConnectionSnapshot.new.documents.mongo_session).to eq CustomConnectionSnapshot.snapshot_session
141
+ end
120
142
  end
121
143
  it 'provides access to a Mongoid collection' do
122
144
  snapshot = CustomConnectionSnapshot.create
@@ -12,12 +12,22 @@ end
12
12
  require File.expand_path('../../lib/mongoid_collection_snapshot', __FILE__)
13
13
  Dir["#{File.dirname(__FILE__)}/models/**/*.rb"].each { |f| require f }
14
14
 
15
+ require 'mongoid-compatibility'
16
+
15
17
  RSpec.configure do |c|
18
+ c.before(:all) do
19
+ Mongoid.logger.level = Logger::INFO
20
+ Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5?
21
+ end
16
22
  c.before(:each) do
17
23
  Mongoid.purge!
18
24
  end
19
25
  c.after(:all) do
20
- Mongoid.default_session.drop
26
+ if Mongoid::Compatibility::Version.mongoid5?
27
+ Mongoid.default_client.database.drop
28
+ else
29
+ Mongoid.default_session.drop
30
+ end
21
31
  end
22
32
  end
23
33
 
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_collection_snapshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Windsor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-27 00:00:00.000000000 Z
11
+ date: 2015-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mongoid_slug
28
+ name: mongoid-compatibility
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mongoid-slug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description:
@@ -44,9 +58,9 @@ executables: []
44
58
  extensions: []
45
59
  extra_rdoc_files: []
46
60
  files:
47
- - .gitignore
48
- - .rspec
49
- - .travis.yml
61
+ - ".gitignore"
62
+ - ".rspec"
63
+ - ".travis.yml"
50
64
  - CHANGELOG.md
51
65
  - Gemfile
52
66
  - LICENSE.txt
@@ -72,17 +86,17 @@ require_paths:
72
86
  - lib
73
87
  required_ruby_version: !ruby/object:Gem::Requirement
74
88
  requirements:
75
- - - '>='
89
+ - - ">="
76
90
  - !ruby/object:Gem::Version
77
91
  version: '0'
78
92
  required_rubygems_version: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: 1.3.6
83
97
  requirements: []
84
98
  rubyforge_project:
85
- rubygems_version: 2.0.14
99
+ rubygems_version: 2.2.2
86
100
  signing_key:
87
101
  specification_version: 4
88
102
  summary: Easy maintenence of collections of processed data in MongoDB with the Mongoid