lite-archive 1.0.2 → 1.0.7

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