lite-archive 1.0.2 → 1.0.7

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: 6ae94a3221795e257a1006b97f1767d323e6ab228d8db1e96f058aa7543c7bfb
4
- data.tar.gz: 0e32473ec68a788d6b97140e5ca38c70b5bc41f80f64afc63b76cf771b551aff
3
+ metadata.gz: 05c24a09d2048dfa4e351204489462d3d86ba453fcdcabbb2cd6920d0dd20a9b
4
+ data.tar.gz: 2336963e85871ab47c5c58c8f9d0acbef1dfdcbc928694ef9c18a65b73eb031a
5
5
  SHA512:
6
- metadata.gz: 5433996f33421d704bcf3d38edf9f80569166a2d792247e099e279b1bf62269471a4f47f59246cf5dd003f4b06cd7baf19d26c04b9ad1fc20cd85a7fbf78cc8a
7
- data.tar.gz: 27823bf54b46c332963f8a1d768742bb4c2f570112312e2aeca268bc1735c3003867b08077cc22c98700a7ed62c031bb87cc63a4607a6cf6857ce7d0bf26c192
6
+ metadata.gz: e3083fb599fc8fa1043327aea5ef7823c804e51f48c93e6212e71d319d59fdd294b8f436eb4b9e4a564e3ecfea021dfa8da60972a2ff2c5997540d5ccf6406d4
7
+ data.tar.gz: 10aece893c72226121d2b9f73c4d2aaeed29b1ce91859488877e44e5811b3ff9089e4dd36078e0ebe8f925a530c2b962def47fa5abf8149ec23d41ff208a26ef
@@ -2,11 +2,14 @@ require:
2
2
  - rubocop-performance
3
3
  - rubocop-rspec
4
4
  AllCops:
5
- TargetRubyVersion: 2.6
5
+ TargetRubyVersion: 2.7
6
+ NewCops: enable
6
7
  DisplayCopNames: true
7
8
  DisplayStyleGuide: true
8
- LineLength:
9
- Max: 100
9
+ Gemspec/RequiredRubyVersion:
10
+ Enabled: false
11
+ Layout/EmptyLinesAroundAttributeAccessor:
12
+ Enabled: true
10
13
  Layout/EmptyLinesAroundBlockBody:
11
14
  Exclude:
12
15
  - 'spec/**/**/*'
@@ -14,6 +17,14 @@ Layout/EmptyLinesAroundClassBody:
14
17
  EnforcedStyle: empty_lines_except_namespace
15
18
  Layout/EmptyLinesAroundModuleBody:
16
19
  EnforcedStyle: empty_lines_except_namespace
20
+ Layout/LineLength:
21
+ Max: 100
22
+ Layout/SpaceAroundMethodCallOperator:
23
+ Enabled: true
24
+ Lint/RaiseException:
25
+ Enabled: true
26
+ Lint/StructNewOverride:
27
+ Enabled: true
17
28
  Metrics/BlockLength:
18
29
  Exclude:
19
30
  - 'spec/**/**/*'
@@ -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
@@ -5,6 +5,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
+
9
+ ## [1.0.7] - 2020-11-03
10
+ ### Changed
11
+ - Improved migration support
12
+
13
+ ## [1.0.6] - 2020-07-03
14
+ ### Added
15
+ - Added Ruby 2.7 support
16
+
17
+ ## [1.0.5] - 2019-11-02
18
+ ### Added
19
+ - Add `sync_updated_at` option
20
+
21
+ ## [1.0.4] - 2019-08-24
22
+ ### Changed
23
+ - Improved how configuration works
24
+
25
+ ## [1.0.3] - 2019-08-15
26
+ ### Changed
27
+ - Underscore initializer file name
28
+
8
29
  ## [1.0.2] - 2019-07-08
9
30
  ### Added
10
31
  - Require rails/railtie in railtie
@@ -1,124 +1,131 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-archive (1.0.2)
4
+ lite-archive (1.0.7)
5
5
  activerecord
6
6
  activesupport
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (5.2.3)
12
- actionview (= 5.2.3)
13
- activesupport (= 5.2.3)
14
- rack (~> 2.0)
11
+ actionpack (6.0.3.4)
12
+ actionview (= 6.0.3.4)
13
+ activesupport (= 6.0.3.4)
14
+ rack (~> 2.0, >= 2.0.8)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
- actionview (5.2.3)
19
- activesupport (= 5.2.3)
17
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
+ actionview (6.0.3.4)
19
+ activesupport (= 6.0.3.4)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
24
- activemodel (5.2.3)
25
- activesupport (= 5.2.3)
26
- activerecord (5.2.3)
27
- activemodel (= 5.2.3)
28
- activesupport (= 5.2.3)
29
- arel (>= 9.0)
30
- activesupport (5.2.3)
23
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
+ activemodel (6.0.3.4)
25
+ activesupport (= 6.0.3.4)
26
+ activerecord (6.0.3.4)
27
+ activemodel (= 6.0.3.4)
28
+ activesupport (= 6.0.3.4)
29
+ activesupport (6.0.3.4)
31
30
  concurrent-ruby (~> 1.0, >= 1.0.2)
32
31
  i18n (>= 0.7, < 2)
33
32
  minitest (~> 5.1)
34
33
  tzinfo (~> 1.1)
35
- arel (9.0.0)
36
- ast (2.4.0)
37
- builder (3.2.3)
34
+ zeitwerk (~> 2.2, >= 2.2.2)
35
+ ast (2.4.1)
36
+ builder (3.2.4)
38
37
  colorize (0.8.1)
39
- concurrent-ruby (1.1.5)
40
- crass (1.0.4)
41
- database_cleaner (1.7.0)
42
- diff-lcs (1.3)
43
- erubi (1.8.0)
44
- fasterer (0.5.1)
38
+ concurrent-ruby (1.1.7)
39
+ crass (1.0.6)
40
+ database_cleaner (1.8.5)
41
+ diff-lcs (1.4.4)
42
+ erubi (1.9.0)
43
+ fasterer (0.8.3)
45
44
  colorize (~> 0.7)
46
- ruby_parser (>= 3.13.0)
45
+ ruby_parser (>= 3.14.1)
47
46
  generator_spec (0.9.4)
48
47
  activesupport (>= 3.0.0)
49
48
  railties (>= 3.0.0)
50
- i18n (1.6.0)
49
+ i18n (1.8.5)
51
50
  concurrent-ruby (~> 1.0)
52
- jaro_winkler (1.5.3)
53
- loofah (2.2.3)
51
+ loofah (2.7.0)
54
52
  crass (~> 1.0.2)
55
53
  nokogiri (>= 1.5.9)
56
- method_source (0.9.2)
54
+ method_source (1.0.0)
57
55
  mini_portile2 (2.4.0)
58
- minitest (5.11.3)
59
- nokogiri (1.10.3)
56
+ minitest (5.14.2)
57
+ nokogiri (1.10.10)
60
58
  mini_portile2 (~> 2.4.0)
61
- parallel (1.17.0)
62
- parser (2.6.3.0)
63
- ast (~> 2.4.0)
64
- rack (2.0.7)
59
+ parallel (1.19.2)
60
+ parser (2.7.2.0)
61
+ ast (~> 2.4.1)
62
+ rack (2.2.3)
65
63
  rack-test (1.1.0)
66
64
  rack (>= 1.0, < 3)
67
65
  rails-dom-testing (2.0.3)
68
66
  activesupport (>= 4.2.0)
69
67
  nokogiri (>= 1.6)
70
- rails-html-sanitizer (1.0.4)
71
- loofah (~> 2.2, >= 2.2.2)
72
- railties (5.2.3)
73
- actionpack (= 5.2.3)
74
- activesupport (= 5.2.3)
68
+ rails-html-sanitizer (1.3.0)
69
+ loofah (~> 2.3)
70
+ railties (6.0.3.4)
71
+ actionpack (= 6.0.3.4)
72
+ activesupport (= 6.0.3.4)
75
73
  method_source
76
74
  rake (>= 0.8.7)
77
- thor (>= 0.19.0, < 2.0)
75
+ thor (>= 0.20.3, < 2.0)
78
76
  rainbow (3.0.0)
79
- rake (12.3.2)
80
- rspec (3.8.0)
81
- rspec-core (~> 3.8.0)
82
- rspec-expectations (~> 3.8.0)
83
- rspec-mocks (~> 3.8.0)
84
- rspec-core (3.8.2)
85
- rspec-support (~> 3.8.0)
86
- rspec-expectations (3.8.4)
77
+ rake (13.0.1)
78
+ regexp_parser (1.8.2)
79
+ rexml (3.2.4)
80
+ rspec (3.10.0)
81
+ rspec-core (~> 3.10.0)
82
+ rspec-expectations (~> 3.10.0)
83
+ rspec-mocks (~> 3.10.0)
84
+ rspec-core (3.10.0)
85
+ rspec-support (~> 3.10.0)
86
+ rspec-expectations (3.10.0)
87
87
  diff-lcs (>= 1.2.0, < 2.0)
88
- rspec-support (~> 3.8.0)
89
- rspec-mocks (3.8.1)
88
+ rspec-support (~> 3.10.0)
89
+ rspec-mocks (3.10.0)
90
90
  diff-lcs (>= 1.2.0, < 2.0)
91
- rspec-support (~> 3.8.0)
92
- rspec-rails (3.8.2)
93
- actionpack (>= 3.0)
94
- activesupport (>= 3.0)
95
- railties (>= 3.0)
96
- rspec-core (~> 3.8.0)
97
- rspec-expectations (~> 3.8.0)
98
- rspec-mocks (~> 3.8.0)
99
- rspec-support (~> 3.8.0)
100
- rspec-support (3.8.2)
101
- rubocop (0.72.0)
102
- jaro_winkler (~> 1.5.1)
91
+ rspec-support (~> 3.10.0)
92
+ rspec-rails (4.0.1)
93
+ actionpack (>= 4.2)
94
+ activesupport (>= 4.2)
95
+ railties (>= 4.2)
96
+ rspec-core (~> 3.9)
97
+ rspec-expectations (~> 3.9)
98
+ rspec-mocks (~> 3.9)
99
+ rspec-support (~> 3.9)
100
+ rspec-support (3.10.0)
101
+ rubocop (0.93.1)
103
102
  parallel (~> 1.10)
104
- parser (>= 2.6)
103
+ parser (>= 2.7.1.5)
105
104
  rainbow (>= 2.2.2, < 4.0)
105
+ regexp_parser (>= 1.8)
106
+ rexml
107
+ rubocop-ast (>= 0.6.0)
106
108
  ruby-progressbar (~> 1.7)
107
- unicode-display_width (>= 1.4.0, < 1.7)
108
- rubocop-performance (1.4.0)
109
- rubocop (>= 0.71.0)
110
- rubocop-rspec (1.33.0)
111
- rubocop (>= 0.60.0)
109
+ unicode-display_width (>= 1.4.0, < 2.0)
110
+ rubocop-ast (1.1.0)
111
+ parser (>= 2.7.1.5)
112
+ rubocop-performance (1.8.1)
113
+ rubocop (>= 0.87.0)
114
+ rubocop-ast (>= 0.4.0)
115
+ rubocop-rspec (1.44.1)
116
+ rubocop (~> 0.87)
117
+ rubocop-ast (>= 0.7.1)
112
118
  ruby-progressbar (1.10.1)
113
- ruby_parser (3.13.1)
119
+ ruby_parser (3.15.0)
114
120
  sexp_processor (~> 4.9)
115
- sexp_processor (4.12.1)
116
- sqlite3 (1.4.1)
117
- thor (0.20.3)
121
+ sexp_processor (4.15.1)
122
+ sqlite3 (1.4.2)
123
+ thor (1.0.1)
118
124
  thread_safe (0.3.6)
119
- tzinfo (1.2.5)
125
+ tzinfo (1.2.7)
120
126
  thread_safe (~> 0.1)
121
- unicode-display_width (1.6.0)
127
+ unicode-display_width (1.7.0)
128
+ zeitwerk (2.4.1)
122
129
 
123
130
  PLATFORMS
124
131
  ruby
@@ -138,4 +145,4 @@ DEPENDENCIES
138
145
  sqlite3
139
146
 
140
147
  BUNDLED WITH
141
- 2.0.1
148
+ 2.1.4
data/README.md CHANGED
@@ -35,11 +35,12 @@ Or install it yourself as:
35
35
  ## Configurations
36
36
 
37
37
  `rails g lite:archive:install` will generate the following file:
38
- `../config/initalizers/lite-archive.rb`
38
+ `../config/initalizers/lite_archive.rb`
39
39
 
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
  ```
@@ -9,7 +9,7 @@ module Lite
9
9
  source_root File.expand_path('../templates', __FILE__)
10
10
 
11
11
  def copy_initializer_file
12
- copy_file('install.rb', 'config/initializers/lite-archive.rb')
12
+ copy_file('install.rb', 'config/initializers/lite_archive.rb')
13
13
  end
14
14
 
15
15
  end
@@ -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
@@ -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,24 +5,31 @@ 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
15
16
 
16
- def self.configuration
17
- @configuration ||= Configuration.new
18
- end
17
+ class << self
19
18
 
20
- def self.configuration=(config)
21
- @configuration = config
22
- end
19
+ attr_writer :configuration
20
+
21
+ def configuration
22
+ @configuration ||= Configuration.new
23
+ end
24
+
25
+ def configure
26
+ yield(configuration)
27
+ end
28
+
29
+ def reset_configuration!
30
+ @configuration = Configuration.new
31
+ end
23
32
 
24
- def self.configure
25
- yield(configuration)
26
33
  end
27
34
 
28
35
  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.2'
6
+ VERSION ||= '1.0.7'
7
7
 
8
8
  end
9
9
  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.2
4
+ version: 1.0.7
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-07-08 00:00:00.000000000 Z
11
+ date: 2020-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -192,7 +192,7 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
- description:
195
+ description:
196
196
  email:
197
197
  - j.gomez@drexed.com
198
198
  executables: []
@@ -222,6 +222,7 @@ files:
222
222
  - lib/lite/archive/configuration.rb
223
223
  - lib/lite/archive/methods.rb
224
224
  - lib/lite/archive/railtie.rb
225
+ - lib/lite/archive/schema_statement.rb
225
226
  - lib/lite/archive/scopes.rb
226
227
  - lib/lite/archive/table_definition.rb
227
228
  - lib/lite/archive/version.rb
@@ -230,7 +231,7 @@ homepage: http://drexed.github.io/lite-archive
230
231
  licenses:
231
232
  - MIT
232
233
  metadata: {}
233
- post_install_message:
234
+ post_install_message:
234
235
  rdoc_options: []
235
236
  require_paths:
236
237
  - lib
@@ -245,8 +246,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
246
  - !ruby/object:Gem::Version
246
247
  version: '0'
247
248
  requirements: []
248
- rubygems_version: 3.0.4
249
- signing_key:
249
+ rubygems_version: 3.1.4
250
+ signing_key:
250
251
  specification_version: 4
251
252
  summary: Archive (soft-delete) ActiveRecord database records
252
253
  test_files: []