lite-archive 1.0.4 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 873f15c2b22fb7736e415dec8decbcea243a1d424e6b761adde077be80a01d33
4
- data.tar.gz: 91e072b1c993b6af4dd725001e816c9ffd714daf756b401d9f07fca91d1041f4
3
+ metadata.gz: b25f37ea6d009012219dde5ff133fcfb1f15e41d1d0efce866508a02595158ad
4
+ data.tar.gz: 8af53ea0791d742cb1d70f73fa781c94d171ecfcd041d7c2a577695d3eb50424
5
5
  SHA512:
6
- metadata.gz: df58d79095d1a2f44c86811f3588526949edeeb98f687e3edc4158209893f5e3d36d117d31e1a21bee8571d15a063404b4d426e243cd0cd0674d56f631f45061
7
- data.tar.gz: a90d9e3b20761c40415ef351a79f1c0f6a92fda35266beb8f2b6c170efef29ebf26dabf10af5d50ee99a81f122d5aaa93975f98145552b3f870be0aef9435a5f
6
+ metadata.gz: dd2624cd77803ae2ace19bd3d30b9a9396f447e6d05057c5f1d76bfa1d4a78ea7be078c022a684f60e17a829f3c12fafbbd4e988e6f9c44c33a3a560c072934a
7
+ data.tar.gz: 8f206cde5b3aad7199375bde2c4af8743e87b0ad20c3fa33dba54bd36b1df96afefeedef3350f1fe195a92e5416927660841da688e9790271ddf189d9e22cccd
data/.rubocop.yml CHANGED
@@ -1,12 +1,16 @@
1
1
  require:
2
2
  - rubocop-performance
3
+ - rubocop-rake
3
4
  - rubocop-rspec
4
5
  AllCops:
5
- TargetRubyVersion: 2.6
6
+ TargetRubyVersion: 3.0
7
+ NewCops: enable
6
8
  DisplayCopNames: true
7
9
  DisplayStyleGuide: true
8
- LineLength:
9
- Max: 100
10
+ Gemspec/RequiredRubyVersion:
11
+ Enabled: false
12
+ Layout/EmptyLinesAroundAttributeAccessor:
13
+ Enabled: true
10
14
  Layout/EmptyLinesAroundBlockBody:
11
15
  Exclude:
12
16
  - 'spec/**/**/*'
@@ -14,6 +18,14 @@ Layout/EmptyLinesAroundClassBody:
14
18
  EnforcedStyle: empty_lines_except_namespace
15
19
  Layout/EmptyLinesAroundModuleBody:
16
20
  EnforcedStyle: empty_lines_except_namespace
21
+ Layout/LineLength:
22
+ Max: 100
23
+ Layout/SpaceAroundMethodCallOperator:
24
+ Enabled: true
25
+ Lint/RaiseException:
26
+ Enabled: true
27
+ Lint/StructNewOverride:
28
+ Enabled: true
17
29
  Metrics/BlockLength:
18
30
  Exclude:
19
31
  - 'spec/**/**/*'
data/.travis.yml CHANGED
@@ -4,6 +4,7 @@ cache: bundler
4
4
  rvm:
5
5
  - 2.5
6
6
  - 2.6
7
+ - 2.7
7
8
  - ruby-head
8
9
  matrix:
9
10
  fast_finish: true
data/CHANGELOG.md CHANGED
@@ -6,9 +6,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.0] - 2021-07-19
10
+ ### Added
11
+ - Added Ruby 3.0 support
12
+
13
+ ## [1.0.7] - 2020-11-03
14
+ ### Changed
15
+ - Improved migration support
16
+
17
+ ## [1.0.6] - 2020-07-03
18
+ ### Added
19
+ - Added Ruby 2.7 support
20
+
21
+ ## [1.0.5] - 2019-11-02
22
+ ### Added
23
+ - Add `sync_updated_at` option
24
+
9
25
  ## [1.0.4] - 2019-08-24
10
26
  ### Changed
11
- - Imporved how configuration works
27
+ - Improved how configuration works
12
28
 
13
29
  ## [1.0.3] - 2019-08-15
14
30
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,124 +1,139 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-archive (1.0.4)
4
+ lite-archive (1.1.0)
5
5
  activerecord
6
6
  activesupport
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (6.0.0)
12
- actionview (= 6.0.0)
13
- activesupport (= 6.0.0)
14
- rack (~> 2.0)
11
+ actionpack (6.1.4)
12
+ actionview (= 6.1.4)
13
+ activesupport (= 6.1.4)
14
+ rack (~> 2.0, >= 2.0.9)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actionview (6.0.0)
19
- activesupport (= 6.0.0)
18
+ actionview (6.1.4)
19
+ activesupport (= 6.1.4)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- activemodel (6.0.0)
25
- activesupport (= 6.0.0)
26
- activerecord (6.0.0)
27
- activemodel (= 6.0.0)
28
- activesupport (= 6.0.0)
29
- activesupport (6.0.0)
24
+ activemodel (6.1.4)
25
+ activesupport (= 6.1.4)
26
+ activerecord (6.1.4)
27
+ activemodel (= 6.1.4)
28
+ activesupport (= 6.1.4)
29
+ activesupport (6.1.4)
30
30
  concurrent-ruby (~> 1.0, >= 1.0.2)
31
- i18n (>= 0.7, < 2)
32
- minitest (~> 5.1)
33
- tzinfo (~> 1.1)
34
- zeitwerk (~> 2.1, >= 2.1.8)
35
- ast (2.4.0)
36
- builder (3.2.3)
31
+ i18n (>= 1.6, < 2)
32
+ minitest (>= 5.1)
33
+ tzinfo (~> 2.0)
34
+ zeitwerk (~> 2.3)
35
+ ast (2.4.2)
36
+ builder (3.2.4)
37
37
  colorize (0.8.1)
38
- concurrent-ruby (1.1.5)
39
- crass (1.0.4)
40
- database_cleaner (1.7.0)
41
- diff-lcs (1.3)
42
- erubi (1.8.0)
43
- fasterer (0.6.0)
38
+ concurrent-ruby (1.1.9)
39
+ crass (1.0.6)
40
+ database_cleaner (2.0.1)
41
+ database_cleaner-active_record (~> 2.0.0)
42
+ database_cleaner-active_record (2.0.1)
43
+ activerecord (>= 5.a)
44
+ database_cleaner-core (~> 2.0.0)
45
+ database_cleaner-core (2.0.1)
46
+ diff-lcs (1.4.4)
47
+ erubi (1.10.0)
48
+ fasterer (0.9.0)
44
49
  colorize (~> 0.7)
45
- ruby_parser (>= 3.13.0)
50
+ ruby_parser (>= 3.14.1)
46
51
  generator_spec (0.9.4)
47
52
  activesupport (>= 3.0.0)
48
53
  railties (>= 3.0.0)
49
- i18n (1.6.0)
54
+ i18n (1.8.10)
50
55
  concurrent-ruby (~> 1.0)
51
- jaro_winkler (1.5.3)
52
- loofah (2.2.3)
56
+ loofah (2.10.0)
53
57
  crass (~> 1.0.2)
54
58
  nokogiri (>= 1.5.9)
55
- method_source (0.9.2)
56
- mini_portile2 (2.4.0)
57
- minitest (5.11.3)
58
- nokogiri (1.10.4)
59
- mini_portile2 (~> 2.4.0)
60
- parallel (1.17.0)
61
- parser (2.6.3.0)
62
- ast (~> 2.4.0)
63
- rack (2.0.7)
59
+ method_source (1.0.0)
60
+ mini_portile2 (2.5.3)
61
+ minitest (5.14.4)
62
+ nokogiri (1.11.7)
63
+ mini_portile2 (~> 2.5.0)
64
+ racc (~> 1.4)
65
+ parallel (1.20.1)
66
+ parser (3.0.2.0)
67
+ ast (~> 2.4.1)
68
+ racc (1.5.2)
69
+ rack (2.2.3)
64
70
  rack-test (1.1.0)
65
71
  rack (>= 1.0, < 3)
66
72
  rails-dom-testing (2.0.3)
67
73
  activesupport (>= 4.2.0)
68
74
  nokogiri (>= 1.6)
69
- rails-html-sanitizer (1.2.0)
70
- loofah (~> 2.2, >= 2.2.2)
71
- railties (6.0.0)
72
- actionpack (= 6.0.0)
73
- activesupport (= 6.0.0)
75
+ rails-html-sanitizer (1.3.0)
76
+ loofah (~> 2.3)
77
+ railties (6.1.4)
78
+ actionpack (= 6.1.4)
79
+ activesupport (= 6.1.4)
74
80
  method_source
75
- rake (>= 0.8.7)
76
- thor (>= 0.20.3, < 2.0)
81
+ rake (>= 0.13)
82
+ thor (~> 1.0)
77
83
  rainbow (3.0.0)
78
- rake (12.3.3)
79
- rspec (3.8.0)
80
- rspec-core (~> 3.8.0)
81
- rspec-expectations (~> 3.8.0)
82
- rspec-mocks (~> 3.8.0)
83
- rspec-core (3.8.2)
84
- rspec-support (~> 3.8.0)
85
- rspec-expectations (3.8.4)
84
+ rake (13.0.6)
85
+ regexp_parser (2.1.1)
86
+ rexml (3.2.5)
87
+ rspec (3.10.0)
88
+ rspec-core (~> 3.10.0)
89
+ rspec-expectations (~> 3.10.0)
90
+ rspec-mocks (~> 3.10.0)
91
+ rspec-core (3.10.1)
92
+ rspec-support (~> 3.10.0)
93
+ rspec-expectations (3.10.1)
86
94
  diff-lcs (>= 1.2.0, < 2.0)
87
- rspec-support (~> 3.8.0)
88
- rspec-mocks (3.8.1)
95
+ rspec-support (~> 3.10.0)
96
+ rspec-mocks (3.10.2)
89
97
  diff-lcs (>= 1.2.0, < 2.0)
90
- rspec-support (~> 3.8.0)
91
- rspec-rails (3.8.2)
92
- actionpack (>= 3.0)
93
- activesupport (>= 3.0)
94
- railties (>= 3.0)
95
- rspec-core (~> 3.8.0)
96
- rspec-expectations (~> 3.8.0)
97
- rspec-mocks (~> 3.8.0)
98
- rspec-support (~> 3.8.0)
99
- rspec-support (3.8.2)
100
- rubocop (0.74.0)
101
- jaro_winkler (~> 1.5.1)
98
+ rspec-support (~> 3.10.0)
99
+ rspec-rails (5.0.1)
100
+ actionpack (>= 5.2)
101
+ activesupport (>= 5.2)
102
+ railties (>= 5.2)
103
+ rspec-core (~> 3.10)
104
+ rspec-expectations (~> 3.10)
105
+ rspec-mocks (~> 3.10)
106
+ rspec-support (~> 3.10)
107
+ rspec-support (3.10.2)
108
+ rubocop (1.18.3)
102
109
  parallel (~> 1.10)
103
- parser (>= 2.6)
110
+ parser (>= 3.0.0.0)
104
111
  rainbow (>= 2.2.2, < 4.0)
112
+ regexp_parser (>= 1.8, < 3.0)
113
+ rexml
114
+ rubocop-ast (>= 1.7.0, < 2.0)
105
115
  ruby-progressbar (~> 1.7)
106
- unicode-display_width (>= 1.4.0, < 1.7)
107
- rubocop-performance (1.4.1)
108
- rubocop (>= 0.71.0)
109
- rubocop-rspec (1.35.0)
110
- rubocop (>= 0.60.0)
111
- ruby-progressbar (1.10.1)
112
- ruby_parser (3.13.1)
113
- sexp_processor (~> 4.9)
114
- sexp_processor (4.12.1)
115
- sqlite3 (1.4.1)
116
- thor (0.20.3)
117
- thread_safe (0.3.6)
118
- tzinfo (1.2.5)
119
- thread_safe (~> 0.1)
120
- unicode-display_width (1.6.0)
121
- zeitwerk (2.1.9)
116
+ unicode-display_width (>= 1.4.0, < 3.0)
117
+ rubocop-ast (1.8.0)
118
+ parser (>= 3.0.1.1)
119
+ rubocop-performance (1.11.4)
120
+ rubocop (>= 1.7.0, < 2.0)
121
+ rubocop-ast (>= 0.4.0)
122
+ rubocop-rake (0.6.0)
123
+ rubocop (~> 1.0)
124
+ rubocop-rspec (2.4.0)
125
+ rubocop (~> 1.0)
126
+ rubocop-ast (>= 1.1.0)
127
+ ruby-progressbar (1.11.0)
128
+ ruby_parser (3.16.0)
129
+ sexp_processor (~> 4.15, >= 4.15.1)
130
+ sexp_processor (4.15.3)
131
+ sqlite3 (1.4.2)
132
+ thor (1.1.0)
133
+ tzinfo (2.0.4)
134
+ concurrent-ruby (~> 1.0)
135
+ unicode-display_width (2.0.0)
136
+ zeitwerk (2.4.2)
122
137
 
123
138
  PLATFORMS
124
139
  ruby
@@ -134,8 +149,9 @@ DEPENDENCIES
134
149
  rspec-rails
135
150
  rubocop
136
151
  rubocop-performance
152
+ rubocop-rake
137
153
  rubocop-rspec
138
154
  sqlite3
139
155
 
140
156
  BUNDLED WITH
141
- 2.0.1
157
+ 2.2.24
data/README.md CHANGED
@@ -40,6 +40,7 @@ Or install it yourself as:
40
40
  ```ruby
41
41
  Lite::Archive.configure do |config|
42
42
  config.all_records_archivable = false
43
+ config.sync_updated_at = true
43
44
  end
44
45
  ```
45
46
 
@@ -51,23 +52,15 @@ If the table does not have this column, records will be destroy instead of archi
51
52
  ```ruby
52
53
  class AddArchivedAtColumn < ActiveRecord::Migration
53
54
  def change
54
- # Adds archived_at automatically (if all_records_archivable is set to true)
55
- t.timestamp
55
+ create_table :table_name do |t|
56
+ t.timestamp # Adds archived_at automatically (if all_records_archivable is set to true)
57
+ t.timestamp archive: true # Adds archived_at timestamp
58
+ t.timestamp archive: false # Does NOT add archived_at timestamp
59
+ end
56
60
 
57
- # - or -
61
+ add_timestamp :table_name
58
62
 
59
- # Adds archived_at timestamp
60
- t.timestamp archive: true
61
-
62
- # - or -
63
-
64
- # Does NOT add archived_at timestamp
65
- t.timestamp archive: false
66
-
67
- # - or -
68
-
69
- # Manual column (null constraint must be false)
70
- add_column :your_model, :archived_at, :datetime
63
+ add_column :table_name, :archived_at, :datetime # Manual column (null constraint must be false)
71
64
  end
72
65
  end
73
66
  ```
@@ -2,4 +2,5 @@
2
2
 
3
3
  Lite::Archive.configure do |config|
4
4
  config.all_records_archivable = false
5
+ config.sync_updated_at = true
5
6
  end
data/lib/lite/archive.rb CHANGED
@@ -6,7 +6,7 @@ require 'active_support'
6
6
  require 'lite/archive/version'
7
7
  require 'lite/archive/railtie' if defined?(Rails)
8
8
 
9
- %w[configuration table_definition methods scopes base].each do |name|
9
+ %w[configuration schema_statement table_definition methods scopes base].each do |name|
10
10
  require "lite/archive/#{name}"
11
11
  end
12
12
 
@@ -146,6 +146,8 @@ module Lite
146
146
  end
147
147
 
148
148
  def updatable?
149
+ return false unless Lite::Archive.configuration.sync_updated_at == true
150
+
149
151
  respond_to?(:updated_at)
150
152
  end
151
153
 
@@ -5,10 +5,11 @@ module Lite
5
5
 
6
6
  class Configuration
7
7
 
8
- attr_accessor :all_records_archivable
8
+ attr_accessor :all_records_archivable, :sync_updated_at
9
9
 
10
10
  def initialize
11
11
  @all_records_archivable = false
12
+ @sync_updated_at = true
12
13
  end
13
14
 
14
15
  end
@@ -6,7 +6,7 @@ module Lite
6
6
  module Archive
7
7
  class Railtie < ::Rails::Railtie
8
8
 
9
- initializer 'lite-archive' do |app|
9
+ initializer 'lite-archive.setup' do |app|
10
10
  Lite::Archive::Railtie.instance_eval do
11
11
  [app.config.i18n.available_locales].flatten.each do |locale|
12
12
  path = File.expand_path("../../../config/locales/#{locale}.yml", __FILE__)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lite
4
+ module Archive
5
+ module SchemaStatement
6
+
7
+ def add_timestamps(table_name, **options)
8
+ options[:null] = false if options[:null].nil?
9
+ options[:precision] ||= 6 if supports_datetime_with_precision?
10
+
11
+ add_column(table_name, :created_at, :datetime, **options)
12
+ add_column(table_name, :updated_at, :datetime, **options)
13
+
14
+ return unless Lite::Archive.configuration.all_records_archivable == true
15
+ return if options[:archive] == false
16
+
17
+ options[:null] = true
18
+ add_column(table_name, :archived_at, :datetime, **options)
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+
25
+ ActiveRecord::Migration.prepend(Lite::Archive::SchemaStatement)
@@ -4,21 +4,23 @@ module Lite
4
4
  module Archive
5
5
  module TableDefinition
6
6
 
7
- def timestamps(*args)
8
- options = args.extract_options!
7
+ def timestamps(**options)
8
+ options[:null] = false if options[:null].nil?
9
+ options[:precision] ||= 6 if @conn.supports_datetime_with_precision?
9
10
 
10
- column(:created_at, :datetime, options)
11
- column(:updated_at, :datetime, options)
11
+ column(:created_at, :datetime, **options)
12
+ column(:updated_at, :datetime, **options)
12
13
 
13
14
  return unless Lite::Archive.configuration.all_records_archivable == true
14
15
  return if options[:archive] == false
15
16
 
16
17
  options[:null] = true
17
- column(:archived_at, :datetime, options)
18
+ column(:archived_at, :datetime, **options)
18
19
  end
19
20
 
20
21
  end
21
22
  end
22
23
  end
23
24
 
25
+ ActiveRecord::ConnectionAdapters::Table.prepend(Lite::Archive::TableDefinition)
24
26
  ActiveRecord::ConnectionAdapters::TableDefinition.prepend(Lite::Archive::TableDefinition)
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Archive
5
5
 
6
- VERSION ||= '1.0.4'
6
+ VERSION = '1.1.0'
7
7
 
8
8
  end
9
9
  end
data/lite-archive.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  )
26
26
  else
27
27
  raise 'RubyGems 2.0 or newer is required to protect against ' \
28
- 'public gem pushes.'
28
+ 'public gem pushes.'
29
29
  end
30
30
 
31
31
  # Specify which files should be added to the gem when it is released.
@@ -49,6 +49,7 @@ Gem::Specification.new do |spec|
49
49
  spec.add_development_dependency 'rspec-rails'
50
50
  spec.add_development_dependency 'rubocop'
51
51
  spec.add_development_dependency 'rubocop-performance'
52
+ spec.add_development_dependency 'rubocop-rake'
52
53
  spec.add_development_dependency 'rubocop-rspec'
53
54
  spec.add_development_dependency 'sqlite3'
54
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite-archive
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-24 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rubocop-rspec
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -192,7 +206,7 @@ dependencies:
192
206
  - - ">="
193
207
  - !ruby/object:Gem::Version
194
208
  version: '0'
195
- description:
209
+ description:
196
210
  email:
197
211
  - j.gomez@drexed.com
198
212
  executables: []
@@ -222,6 +236,7 @@ files:
222
236
  - lib/lite/archive/configuration.rb
223
237
  - lib/lite/archive/methods.rb
224
238
  - lib/lite/archive/railtie.rb
239
+ - lib/lite/archive/schema_statement.rb
225
240
  - lib/lite/archive/scopes.rb
226
241
  - lib/lite/archive/table_definition.rb
227
242
  - lib/lite/archive/version.rb
@@ -230,7 +245,7 @@ homepage: http://drexed.github.io/lite-archive
230
245
  licenses:
231
246
  - MIT
232
247
  metadata: {}
233
- post_install_message:
248
+ post_install_message:
234
249
  rdoc_options: []
235
250
  require_paths:
236
251
  - lib
@@ -245,8 +260,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
260
  - !ruby/object:Gem::Version
246
261
  version: '0'
247
262
  requirements: []
248
- rubygems_version: 3.0.4
249
- signing_key:
263
+ rubygems_version: 3.2.24
264
+ signing_key:
250
265
  specification_version: 4
251
266
  summary: Archive (soft-delete) ActiveRecord database records
252
267
  test_files: []