lite-archive 1.0.5 → 1.1.1

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: b0ee100b21b96ec00decbaf1f2da244dd51c87fdbee8a30a9605f35f1bffb78f
4
- data.tar.gz: 515d799acd61a3ae9e70b4bcb3a5200e03410977b1ed3caa3b3757620f25da06
3
+ metadata.gz: 851598e0a76d9695dd9eaeb19dc963dfac444ad698b7181a604a4783538dfc41
4
+ data.tar.gz: 61f17b3822835e73a51e44ebba4294ce7fb3ec5ec2d991e295c28d31a008ddda
5
5
  SHA512:
6
- metadata.gz: 96b03668f8f2657ab4f0b44cccb42e6c940139e2ebba4e823d2caec7e995c519ead7e09e8d218493039644727609e4947771a8fd762e9e7ceacdae86f31290df
7
- data.tar.gz: 34a7941ab3b34382ccb63c5f1c9d5cb73c3af79bdfd899bbb30b8e8ec9af8ab728e1e73ba1c0984f4fc65492a9667e10c92fc40b727ee1da7bbfd1b147717d3a
6
+ metadata.gz: 93521127ebf7885e35a8cc33e41df535e3379681f4d4f8e70f16030832215a27f8ba5ade973f1ffd5165f45cc47137e273b1a9d9a0d05f9fa97dd25d58dbdb40
7
+ data.tar.gz: e13824f54810e733fa66311af86b65088beed5ba307e9074c62a43ca491d7ddb9fb9e132b91f5c3df04971dfb7ddc0326a504c1d9e44c1ac368e67f95bd98961
data/.rubocop.yml CHANGED
@@ -1,10 +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
10
+ Gemspec/RequiredRubyVersion:
11
+ Enabled: false
12
+ Layout/EmptyLinesAroundAttributeAccessor:
13
+ Enabled: true
8
14
  Layout/EmptyLinesAroundBlockBody:
9
15
  Exclude:
10
16
  - 'spec/**/**/*'
@@ -12,12 +18,18 @@ Layout/EmptyLinesAroundClassBody:
12
18
  EnforcedStyle: empty_lines_except_namespace
13
19
  Layout/EmptyLinesAroundModuleBody:
14
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
15
29
  Metrics/BlockLength:
16
30
  Exclude:
17
31
  - 'spec/**/**/*'
18
32
  - '*.gemspec'
19
- Metrics/LineLength:
20
- Max: 100
21
33
  Metrics/ModuleLength:
22
34
  Enabled: false
23
35
  RSpec/MultipleExpectations:
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,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.1] - 2021-07-21
10
+ ### Changed
11
+ - Improved Railtie support
12
+
13
+ ## [1.1.0] - 2021-07-19
14
+ ### Added
15
+ - Added Ruby 3.0 support
16
+
17
+ ## [1.0.7] - 2020-11-03
18
+ ### Changed
19
+ - Improved migration support
20
+
21
+ ## [1.0.6] - 2020-07-03
22
+ ### Added
23
+ - Added Ruby 2.7 support
24
+
25
+ ## [1.0.5] - 2019-11-02
26
+ ### Added
27
+ - Add `sync_updated_at` option
28
+
9
29
  ## [1.0.4] - 2019-08-24
10
30
  ### Changed
11
- - Imporved how configuration works
31
+ - Improved how configuration works
12
32
 
13
33
  ## [1.0.3] - 2019-08-15
14
34
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,66 +1,72 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-archive (1.0.5)
4
+ lite-archive (1.1.1)
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.5)
40
- database_cleaner (1.7.0)
41
- diff-lcs (1.3)
42
- erubi (1.9.0)
43
- fasterer (0.7.1)
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.7.0)
54
+ i18n (1.8.10)
50
55
  concurrent-ruby (~> 1.0)
51
- jaro_winkler (1.5.4)
52
- loofah (2.3.1)
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.13.0)
58
- nokogiri (1.10.5)
59
- mini_portile2 (~> 2.4.0)
60
- parallel (1.18.0)
61
- parser (2.6.5.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)
@@ -68,57 +74,66 @@ GEM
68
74
  nokogiri (>= 1.6)
69
75
  rails-html-sanitizer (1.3.0)
70
76
  loofah (~> 2.3)
71
- railties (6.0.0)
72
- actionpack (= 6.0.0)
73
- activesupport (= 6.0.0)
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 (13.0.0)
79
- rspec (3.9.0)
80
- rspec-core (~> 3.9.0)
81
- rspec-expectations (~> 3.9.0)
82
- rspec-mocks (~> 3.9.0)
83
- rspec-core (3.9.0)
84
- rspec-support (~> 3.9.0)
85
- rspec-expectations (3.9.0)
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.9.0)
88
- rspec-mocks (3.9.0)
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.9.0)
91
- rspec-rails (3.9.0)
92
- actionpack (>= 3.0)
93
- activesupport (>= 3.0)
94
- railties (>= 3.0)
95
- rspec-core (~> 3.9.0)
96
- rspec-expectations (~> 3.9.0)
97
- rspec-mocks (~> 3.9.0)
98
- rspec-support (~> 3.9.0)
99
- rspec-support (3.9.0)
100
- rubocop (0.76.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.5.0)
108
- rubocop (>= 0.71.0)
109
- rubocop-rspec (1.36.0)
110
- rubocop (>= 0.68.1)
111
- ruby-progressbar (1.10.1)
112
- ruby_parser (3.14.1)
113
- sexp_processor (~> 4.9)
114
- sexp_processor (4.13.0)
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.2.1)
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.2
157
+ 2.2.24
data/README.md CHANGED
@@ -52,23 +52,15 @@ If the table does not have this column, records will be destroy instead of archi
52
52
  ```ruby
53
53
  class AddArchivedAtColumn < ActiveRecord::Migration
54
54
  def change
55
- # Adds archived_at automatically (if all_records_archivable is set to true)
56
- 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
57
60
 
58
- # - or -
61
+ add_timestamp :table_name
59
62
 
60
- # Adds archived_at timestamp
61
- t.timestamp archive: true
62
-
63
- # - or -
64
-
65
- # Does NOT add archived_at timestamp
66
- t.timestamp archive: false
67
-
68
- # - or -
69
-
70
- # Manual column (null constraint must be false)
71
- add_column :your_model, :archived_at, :datetime
63
+ add_column :table_name, :archived_at, :datetime # Manual column (null constraint must be false)
72
64
  end
73
65
  end
74
66
  ```
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/generators'
4
-
5
3
  module Lite
6
4
  module Archive
7
5
  class InstallGenerator < Rails::Generators::Base
data/lib/lite/archive.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_record'
4
- require 'active_support'
3
+ require 'active_record' unless defined?(ActiveRecord)
4
+ require 'active_support' unless defined?(ActiveSupport)
5
5
 
6
+ require 'generators/lite/archive/install_generator' if defined?(Rails::Generators)
7
+
8
+ require 'lite/archive/railtie' if defined?(Rails::Railtie)
6
9
  require 'lite/archive/version'
7
- require 'lite/archive/railtie' if defined?(Rails)
8
10
 
9
- %w[configuration table_definition methods scopes base].each do |name|
11
+ %w[configuration schema_statement table_definition methods scopes base].each do |name|
10
12
  require "lite/archive/#{name}"
11
13
  end
12
-
13
- require 'generators/lite/archive/install_generator'
File without changes
@@ -1,20 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/railtie'
4
-
5
3
  module Lite
6
4
  module Archive
7
- class Railtie < ::Rails::Railtie
5
+ class Railtie < Rails::Railtie
8
6
 
9
- initializer 'lite-archive' do |app|
10
- Lite::Archive::Railtie.instance_eval do
11
- [app.config.i18n.available_locales].flatten.each do |locale|
12
- path = File.expand_path("../../../config/locales/#{locale}.yml", __FILE__)
13
- next if !File.file?(path) || I18n.load_path.include?(path)
7
+ initializer 'lite-archive.configure_locales' do |app|
8
+ Array(app.config.i18n.available_locales).each do |locale|
9
+ path = File.expand_path("../locales/#{locale}.yml", __FILE__)
10
+ next unless File.file?(path)
14
11
 
15
- I18n.load_path << path
16
- end
12
+ I18n.load_path << path
17
13
  end
14
+
15
+ I18n.reload!
18
16
  end
19
17
 
20
18
  end
@@ -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.5'
6
+ VERSION = '1.1.1'
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.5
4
+ version: 1.1.1
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-11-02 00:00:00.000000000 Z
11
+ date: 2021-07-22 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: []
@@ -214,14 +228,15 @@ files:
214
228
  - _config.yml
215
229
  - bin/console
216
230
  - bin/setup
217
- - config/locales/en.yml
218
231
  - lib/generators/lite/archive/install_generator.rb
219
232
  - lib/generators/lite/archive/templates/install.rb
220
233
  - lib/lite/archive.rb
221
234
  - lib/lite/archive/base.rb
222
235
  - lib/lite/archive/configuration.rb
236
+ - lib/lite/archive/locales/en.yml
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.6
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: []