activerecord-prunable 0.3.2 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +14 -12
- data/activerecord-prunable.gemspec +1 -1
- data/lib/activerecord-prunable.rb +18 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98eed29b171fce5713dbc74ab812c8d6ccd4531a
|
4
|
+
data.tar.gz: 41bf6db4104667a2eff427332acdb4f6ee1423c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 531bf56a1a4e857af793da15fb681f90d93f549671872cdfbbef07805aa30fff9a45be76d8773d9b8cf0d0a9c2a834dedaf297cc05fee59d6928c85209e04510
|
7
|
+
data.tar.gz: 6aeceb2f4cc5cde6fe6634b6b1efeaec7bfa2c7eaed4da293a3f35190a431fce02ee5093f11d9fac02a0f2b3a2f8384c9d10714cd39cb23eb6f4d70d05cf3b65
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Activerecord-prunable [](https://badge.fury.io/rb/activerecord-prunable) [](https://travis-ci.org/dr2m/activerecord-prunable) [](https://codeclimate.com/github/dr2m/activerecord-prunable)
|
1
|
+
# Activerecord-prunable [](https://badge.fury.io/rb/activerecord-prunable) [](https://travis-ci.org/dr2m/activerecord-prunable) [](https://codeclimate.com/github/dr2m/activerecord-prunable)
|
2
2
|
|
3
3
|
Convenient removal of obsolete ActiveRecord models.
|
4
4
|
|
@@ -21,7 +21,7 @@ Or install it yourself as:
|
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
24
|
-
__1. Include the `Prunable` module in the ActiveRecord model which needs to be pruned.__
|
24
|
+
__1. Include the `Prunable` module in the ActiveRecord model which needs to be pruned.__
|
25
25
|
|
26
26
|
__2. Define the `:prunable` scope which returns models to prune.__
|
27
27
|
|
@@ -37,7 +37,7 @@ __2. Define the `:prunable` scope which returns models to prune.__
|
|
37
37
|
end
|
38
38
|
```
|
39
39
|
|
40
|
-
or use one of the `prune_after`, `prune_created_after`, `prune_updated_after` methods
|
40
|
+
or use one of the `prune_after`, `prune_created_after`, `prune_updated_after` methods
|
41
41
|
|
42
42
|
```ruby
|
43
43
|
class Notification < ApplicationRecord
|
@@ -47,9 +47,9 @@ __2. Define the `:prunable` scope which returns models to prune.__
|
|
47
47
|
end
|
48
48
|
```
|
49
49
|
|
50
|
-
`prune_after` is an alias for `prune_created_after`
|
51
|
-
`prune_created_after(TTL)` defines `where('created_at < ?', current_time - TTL)` prunable scope
|
52
|
-
`prune_updated_after(TTL)` defines `where('updated_at < ?', current_time - TTL)` prunable scope
|
50
|
+
`prune_after` is an alias for `prune_created_after`
|
51
|
+
`prune_created_after(TTL)` defines `where('created_at < ?', current_time - TTL)` prunable scope
|
52
|
+
`prune_updated_after(TTL)` defines `where('updated_at < ?', current_time - TTL)` prunable scope
|
53
53
|
|
54
54
|
__3. Add a `Prunable.prune!` call to a periodic task.__
|
55
55
|
|
@@ -71,32 +71,34 @@ __Pruning a single model:__
|
|
71
71
|
SomeModel.prune!
|
72
72
|
```
|
73
73
|
|
74
|
-
__Pruning multiple models:__
|
75
|
-
Note that the `Prunable.prune!` calls `Rails.application.eager_load!`. It can decrease free memory size.
|
74
|
+
__Pruning multiple models:__
|
75
|
+
Note that the `Prunable.prune!` calls `Rails.application.eager_load!`. It can decrease free memory size.
|
76
76
|
|
77
77
|
```ruby
|
78
78
|
Prunable.prune!(SomeModel, AnotherModel)
|
79
79
|
```
|
80
80
|
|
81
|
-
__Set default method of pruning (:destroy or :delete):__
|
81
|
+
__Set default method of pruning (:destroy or :delete):__
|
82
82
|
|
83
83
|
```ruby
|
84
84
|
Prunable.prune!(prune_method: :delete)
|
85
85
|
```
|
86
86
|
|
87
|
-
__Call `:prunable` scope with params:__
|
87
|
+
__Call `:prunable` scope with params:__
|
88
88
|
|
89
89
|
```ruby
|
90
90
|
Prunable.prune!(params: [:foo, :bar])
|
91
91
|
```
|
92
92
|
|
93
|
-
__Getting an array of all the models which include `ActiveRecord::Prunable`:__
|
93
|
+
__Getting an array of all the models which include `ActiveRecord::Prunable`:__
|
94
94
|
```ruby
|
95
95
|
Prunable.models
|
96
96
|
```
|
97
97
|
|
98
|
-
__Pruning all models which include `ActiveRecord::Prunable`:__
|
98
|
+
__Pruning all models which include `ActiveRecord::Prunable`:__
|
99
99
|
|
100
100
|
```ruby
|
101
101
|
Prunable.prune!
|
102
102
|
```
|
103
|
+
|
104
|
+
You are also able to call `prune` method instead of `prune!` if you don't want to receive exceptions.
|
@@ -14,9 +14,26 @@ module Prunable
|
|
14
14
|
def prune!(*models, prune_method: nil, current_time: nil, params: [])
|
15
15
|
models = self.models if models.empty?
|
16
16
|
|
17
|
+
models.each_with_object({}) do |model, pruned|
|
18
|
+
pruned[model.table_name] = model.prune!(*params, prune_method: prune_method, current_time: current_time)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def prune(*models, prune_method: nil, current_time: nil, params: [])
|
23
|
+
models = self.models if models.empty?
|
24
|
+
|
25
|
+
pruned = {}
|
26
|
+
errors = []
|
27
|
+
|
17
28
|
models.each do |model|
|
18
|
-
|
29
|
+
begin
|
30
|
+
pruned[model.table_name] = model.prune!(*params, prune_method: prune_method, current_time: current_time)
|
31
|
+
rescue => e
|
32
|
+
errors << e
|
33
|
+
end
|
19
34
|
end
|
35
|
+
|
36
|
+
[pruned, errors]
|
20
37
|
end
|
21
38
|
end
|
22
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-prunable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dr2m
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|