lite-archive 1.0.5 → 1.1.1

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
  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: []