mongoid_paranoia 0.2.1 → 0.3.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: 2edfadf14fc3b166efd190f331c5e86a75de4c20
4
- data.tar.gz: 988223f244d3537c149c7d354163031fbb658c5e
3
+ metadata.gz: f5e32d59286713e858a9dceb94d5f4fb41adeb83
4
+ data.tar.gz: bb428d1861efb3f46e00934b27f337b9ea1a5c65
5
5
  SHA512:
6
- metadata.gz: 37fb1381901fc197f18f79cbbfea5f8db627c94f8d9fa84da71a234878a69c4c9d6eec6e1ac6486f9fac4c59343556fc66ef186f0da5e92700396929b28534b7
7
- data.tar.gz: f69bd91ff7eeabf02d205608a4081967ec02f703b4b807489b251898d44786739023263f44a6c55e07e638d01abe0aafb9386b98da5af67cd44581065662671e
6
+ metadata.gz: c692991d080ea171430e3114f53c4dea77ebcb1dd0c5cbf74543ffb7433610541070c5da097482608277ac4b75bea095a9c4f9c510b29b0fb46085fae2fff43b
7
+ data.tar.gz: 21ccd86425e06c85938fad3121f01ae457b5e1b2061606a2bff1cdc894432bbbe3de728381b87cc5e099403c0511bd2e533347075e713bca972c094c1c41d2a6
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # Paranoid Documents for Mongoid 4 and 5 [![Build Status](https://travis-ci.org/simi/mongoid_paranoia.png?branch=master)](https://travis-ci.org/simi/mongoid_paranoia)[![Gitter chat](https://badges.gitter.im/simi/mongoid_paranoia.png)](https://gitter.im/simi/mongoid_paranoia)
1
+ # Paranoid Documents for Mongoid [![Build Status](https://travis-ci.org/simi/mongoid_paranoia.png?branch=master)](https://travis-ci.org/simi/mongoid_paranoia)[![Gitter chat](https://badges.gitter.im/simi/mongoid_paranoia.png)](https://gitter.im/simi/mongoid_paranoia)
2
2
 
3
3
  `Mongoid::Paranoia` enables a "soft delete" of Mongoid documents. Instead of being removed from the database, paranoid docs are flagged with a `deleted_at` timestamp and are ignored from queries by default.
4
4
 
5
- The `Mongoid::Paranoia` functionality was originally supported in Mongoid itself, but was dropped from version 4.0.0 onwards. This gem was extracted from the [Mongoid 3.0.0-stable branch](https://github.com/mongoid/mongoid/tree/3.0.0-stable). This gem should not be used with Mongoid versions 3.x and prior.
5
+ The `Mongoid::Paranoia` functionality was originally supported in Mongoid itself, but was dropped from version 4.0.0 onwards. This gem was extracted from the [Mongoid 3.0.0-stable branch](https://github.com/mongoid/mongoid/tree/3.0.0-stable). This gem should not be used with Mongoid versions 3.x and prior. Current master branch targeted on Mongoid 6.0. With release 0.3.0 Mongoid 4 and 5 versions will be dropped.
6
6
 
7
7
  **Caution:** This repo/gem `mongoid_paranoia` (underscored) is different than [mongoid-paranoia](https://github.com/haihappen/mongoid-paranoia) (hyphenated). The goal of `mongoid-paranoia` (hyphenated) is to stay API compatible and it only accepts security fixes.
8
8
 
@@ -14,21 +14,6 @@ Add this line to your application's Gemfile:
14
14
  gem 'mongoid_paranoia'
15
15
  ```
16
16
 
17
- ## Changes in 4.0
18
-
19
- ### Uniqueness validator is not overriden
20
-
21
- #### Old syntax:
22
- ```ruby
23
- validates_uniqueness_of :title
24
- validates :title, :uniqueness => true
25
- ```
26
-
27
- #### New syntax:
28
- ```ruby
29
- validates :title, uniqueness: { conditions: -> { where(deleted_at: nil) } }
30
- ```
31
-
32
17
  ## Usage
33
18
 
34
19
  ```ruby
@@ -67,6 +52,13 @@ Mongoid::Paranoia.configure do |c|
67
52
  end
68
53
  ```
69
54
 
55
+ ### Validations
56
+ #### You need override uniqueness validates
57
+
58
+ ```ruby
59
+ validates :title, uniqueness: { conditions: -> { where(deleted_at: nil) } }
60
+ ```
61
+
70
62
  ### Callbacks
71
63
 
72
64
  #### Restore
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
- require 'mongoid/compatibility'
3
2
  require 'mongoid/paranoia/monkey_patches'
4
3
  require 'mongoid/paranoia/configuration'
5
4
  require 'active_support'
@@ -95,15 +94,17 @@ module Mongoid
95
94
  # @return [ true ] True.
96
95
  #
97
96
  # @since 1.0.0
98
- def remove_with_paranoia(options = {})
97
+ alias orig_remove :remove
98
+
99
+ def remove(_ = {})
99
100
  cascade!
100
101
  time = self.deleted_at = Time.now
101
- _paranoia_update("$set" => { paranoid_field => time })
102
+ _paranoia_update('$set' => { paranoid_field => time })
102
103
  @destroyed = true
103
104
  true
104
105
  end
105
- alias_method_chain :remove, :paranoia
106
- alias :delete :remove
106
+
107
+ alias delete :remove
107
108
 
108
109
  # Delete the paranoid +Document+ from the database completely.
109
110
  #
@@ -114,7 +115,7 @@ module Mongoid
114
115
  #
115
116
  # @since 1.0.0
116
117
  def delete!
117
- remove_without_paranoia
118
+ orig_remove
118
119
  end
119
120
 
120
121
  # Determines if this document is destroyed.
@@ -193,16 +194,10 @@ module Mongoid
193
194
  embedded? ? "#{atomic_position}.#{field}" : field
194
195
  end
195
196
 
196
- # Update value in the collection (compatibility layer for Mongoid 4/5).
197
- #
198
197
  # @return [ Object ] Update result.
198
+ #
199
199
  def _paranoia_update(value)
200
- query = paranoid_collection.find(atomic_selector)
201
- if Mongoid::Compatibility::Version.mongoid5?
202
- query.update_one(value)
203
- else
204
- query.update(value)
205
- end
200
+ paranoid_collection.find(atomic_selector).update_one(value)
206
201
  end
207
202
  end
208
203
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Paranoia
3
- VERSION = '0.2.1'
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
@@ -91,7 +91,7 @@ describe Mongoid::Attributes::Nested do
91
91
  context "when saving the parent" do
92
92
 
93
93
  before do
94
- persisted.with(safe: true).save
94
+ persisted.save
95
95
  end
96
96
 
97
97
  it "deletes the marked document from the relation" do
@@ -4,7 +4,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
4
4
  require "mongoid"
5
5
  require "mongoid/paranoia"
6
6
  require "rspec"
7
- Dir[File.join(File.dirname(__FILE__), "app/models/*.rb")].each{ |f| require f }
8
7
 
9
8
  # These environment variables can be set if wanting to test against a database
10
9
  # that is not on the local machine.
@@ -33,6 +32,7 @@ end
33
32
 
34
33
  # Set the database that the spec suite connects to.
35
34
  Mongoid.configure do |config|
35
+ config.belongs_to_required_by_default = false
36
36
  config.connect_to(database_id)
37
37
  end
38
38
 
@@ -55,7 +55,7 @@ RSpec.configure do |config|
55
55
 
56
56
  config.before(:all) do
57
57
  Mongoid.logger.level = Logger::INFO
58
- Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5?
58
+ Mongo::Logger.logger.level = Logger::INFO
59
59
  end
60
60
 
61
61
  config.after(:all) do
@@ -71,3 +71,5 @@ end
71
71
  ActiveSupport::Inflector.inflections do |inflect|
72
72
  inflect.singular("address_components", "address_component")
73
73
  end
74
+
75
+ Dir[File.join(File.dirname(__FILE__), "app/models/*.rb")].each{ |f| require f }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_paranoia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-28 00:00:00.000000000 Z
12
+ date: 2017-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
@@ -17,28 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '4'
20
+ version: 6.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '4'
28
- - !ruby/object:Gem::Dependency
29
- name: mongoid-compatibility
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
27
+ version: 6.0.0
42
28
  description: There may be times when you don't want documents to actually get deleted
43
29
  from the database, but "flagged" as deleted. Mongoid provides a Paranoia module
44
30
  to give you just that.
@@ -102,21 +88,21 @@ specification_version: 4
102
88
  summary: Paranoid documents
103
89
  test_files:
104
90
  - perf/scope.rb
105
- - spec/app/models/author.rb
106
- - spec/app/models/title.rb
107
- - spec/app/models/appointment.rb
108
- - spec/app/models/address.rb
91
+ - spec/mongoid/nested_attributes_spec.rb
92
+ - spec/mongoid/scoping_spec.rb
93
+ - spec/mongoid/configuration_spec.rb
94
+ - spec/mongoid/paranoia_spec.rb
95
+ - spec/mongoid/document_spec.rb
96
+ - spec/mongoid/validatable/uniqueness_spec.rb
109
97
  - spec/app/models/paranoid_phone.rb
110
- - spec/app/models/fish.rb
111
- - spec/app/models/person.rb
112
- - spec/app/models/phone.rb
113
98
  - spec/app/models/paranoid_post.rb
114
99
  - spec/app/models/tag.rb
100
+ - spec/app/models/title.rb
101
+ - spec/app/models/person.rb
102
+ - spec/app/models/address.rb
103
+ - spec/app/models/appointment.rb
104
+ - spec/app/models/fish.rb
115
105
  - spec/app/models/relations.rb
106
+ - spec/app/models/author.rb
107
+ - spec/app/models/phone.rb
116
108
  - spec/spec_helper.rb
117
- - spec/mongoid/paranoia_spec.rb
118
- - spec/mongoid/validatable/uniqueness_spec.rb
119
- - spec/mongoid/nested_attributes_spec.rb
120
- - spec/mongoid/document_spec.rb
121
- - spec/mongoid/configuration_spec.rb
122
- - spec/mongoid/scoping_spec.rb