hoardable 0.14.2 → 0.15.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.
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hoardable
4
+ module SchemaStatements
5
+ def table_options(table_name)
6
+ options = super || {}
7
+ if inherited_table_names = parent_table_names(table_name)
8
+ options[:options] = "INHERITS (#{inherited_table_names.join(", ")})"
9
+ end
10
+ options
11
+ end
12
+
13
+ private def parent_table_names(table_name)
14
+ scope = quoted_scope(table_name, type: "BASE TABLE")
15
+
16
+ query_values(<<~SQL.presence, "SCHEMA").presence
17
+ SELECT parent.relname
18
+ FROM pg_catalog.pg_inherits i
19
+ JOIN pg_catalog.pg_class child ON i.inhrelid = child.oid
20
+ JOIN pg_catalog.pg_class parent ON i.inhparent = parent.oid
21
+ LEFT JOIN pg_namespace n ON n.oid = child.relnamespace
22
+ WHERE child.relname = #{scope[:name]}
23
+ AND child.relkind IN (#{scope[:type]})
24
+ AND n.nspname = #{scope[:schema]}
25
+ SQL
26
+ end
27
+
28
+ def inherited_table?(table_name)
29
+ parent_table_names(table_name).present?
30
+ end
31
+ end
32
+ private_constant :SchemaStatements
33
+ end
@@ -6,23 +6,12 @@ module Hoardable
6
6
  module Scopes
7
7
  extend ActiveSupport::Concern
8
8
 
9
- TABLEOID_AREL_CONDITIONS = lambda do |arel_table, condition|
10
- arel_table[:tableoid].send(
11
- condition,
12
- Arel::Nodes::NamedFunction.new('CAST', [Arel::Nodes::Quoted.new(arel_table.name).as('regclass')])
13
- )
14
- end.freeze
15
- private_constant :TABLEOID_AREL_CONDITIONS
16
-
17
9
  included do
18
- # @!visibility private
19
- attr_writer :tableoid
20
-
21
10
  # By default {Hoardable} only returns instances of the parent table, and not the +versions+ in
22
11
  # the inherited table. This can be bypassed by using the {.include_versions} scope or wrapping
23
12
  # the code in a `Hoardable.at(datetime)` block.
24
13
  default_scope do
25
- if (hoardable_at = Hoardable.instance_variable_get('@at'))
14
+ if (hoardable_at = Hoardable.instance_variable_get("@at"))
26
15
  at(hoardable_at)
27
16
  else
28
17
  exclude_versions
@@ -35,7 +24,7 @@ module Hoardable
35
24
  #
36
25
  # Returns +versions+ along with instances of the source models, all cast as instances of the
37
26
  # source model’s class.
38
- scope :include_versions, -> { unscope(where: [:tableoid]) }
27
+ scope :include_versions, -> { unscope(:from) }
39
28
 
40
29
  # @!scope class
41
30
  # @!method versions
@@ -43,7 +32,7 @@ module Hoardable
43
32
  #
44
33
  # Returns only +versions+ of the parent +ActiveRecord+ class, cast as instances of the source
45
34
  # model’s class.
46
- scope :versions, -> { include_versions.where(TABLEOID_AREL_CONDITIONS.call(arel_table, :not_eq)) }
35
+ scope :versions, -> { from("ONLY #{version_class.table_name}") }
47
36
 
48
37
  # @!scope class
49
38
  # @!method exclude_versions
@@ -51,7 +40,7 @@ module Hoardable
51
40
  #
52
41
  # Excludes +versions+ of the parent +ActiveRecord+ class. This is included by default in the
53
42
  # source model’s +default_scope+.
54
- scope :exclude_versions, -> { where(TABLEOID_AREL_CONDITIONS.call(arel_table, :eq)) }
43
+ scope :exclude_versions, -> { from("ONLY #{table_name}") }
55
44
 
56
45
  # @!scope class
57
46
  # @!method at
@@ -59,21 +48,25 @@ module Hoardable
59
48
  #
60
49
  # Returns instances of the source model and versions that were valid at the supplied
61
50
  # +datetime+ or +time+, all cast as instances of the source model.
62
- scope :at, lambda { |datetime|
63
- raise(CreatedAtColumnMissingError, @klass.table_name) unless @klass.column_names.include?('created_at')
51
+ scope(
52
+ :at,
53
+ lambda do |datetime|
54
+ raise(CreatedAtColumnMissingError, table_name) unless column_names.include?("created_at")
64
55
 
65
- include_versions.where(id: version_class.at(datetime).select(@klass.primary_key)).or(
66
- exclude_versions
67
- .where("#{table_name}.created_at < ?", datetime)
68
- .where.not(id: version_class.select(:hoardable_id).where(DURING_QUERY, datetime))
69
- ).hoardable
70
- }
71
- end
72
-
73
- private
74
-
75
- def tableoid
76
- @tableoid ||= connection.execute("SELECT oid FROM pg_class WHERE relname = '#{table_name}'")[0]['oid']
56
+ from(
57
+ Arel::Nodes::As.new(
58
+ Arel::Nodes::Union.new(
59
+ include_versions.where(id: version_class.at(datetime).select(primary_key)).arel,
60
+ exclude_versions
61
+ .where(created_at: ..datetime)
62
+ .where.not(id: version_class.select(:hoardable_id).where(DURING_QUERY, datetime))
63
+ .arel
64
+ ),
65
+ arel_table
66
+ )
67
+ ).hoardable
68
+ end
69
+ )
77
70
  end
78
71
  end
79
72
  end
@@ -32,11 +32,11 @@ module Hoardable
32
32
  include Scopes
33
33
 
34
34
  around_update(if: [HOARDABLE_CALLBACKS_ENABLED, HOARDABLE_VERSION_UPDATES]) do |_, block|
35
- hoardable_client.insert_hoardable_version('update', &block)
35
+ hoardable_client.insert_hoardable_version("update", &block)
36
36
  end
37
37
 
38
38
  around_destroy(if: [HOARDABLE_CALLBACKS_ENABLED, HOARDABLE_SAVE_TRASH]) do |_, block|
39
- hoardable_client.insert_hoardable_version('delete', &block)
39
+ hoardable_client.insert_hoardable_version("delete", &block)
40
40
  end
41
41
 
42
42
  before_destroy(if: HOARDABLE_CALLBACKS_ENABLED, unless: HOARDABLE_SAVE_TRASH) do
@@ -47,7 +47,8 @@ module Hoardable
47
47
 
48
48
  # Returns all +versions+ in ascending order of their temporal timeframes.
49
49
  has_many(
50
- :versions, -> { order('UPPER(_during) ASC') },
50
+ :versions,
51
+ -> { order("UPPER(_during) ASC") },
51
52
  dependent: nil,
52
53
  class_name: version_class.to_s,
53
54
  inverse_of: :hoardable_source,
@@ -85,7 +86,7 @@ module Hoardable
85
86
  #
86
87
  # @param datetime [DateTime, Time]
87
88
  def version_at(datetime)
88
- raise(Error, 'Future state cannot be known') if datetime.future?
89
+ raise(Error, "Future state cannot be known") if datetime.future?
89
90
 
90
91
  versions.at(datetime).limit(1).first
91
92
  end
@@ -101,7 +102,7 @@ module Hoardable
101
102
  end
102
103
 
103
104
  def hoardable_id
104
- read_attribute('hoardable_id')
105
+ read_attribute("hoardable_id")
105
106
  end
106
107
 
107
108
  delegate :version_class, to: :class
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hoardable
4
- VERSION = '0.14.2'
4
+ VERSION = "0.15.0"
5
5
  end
@@ -13,13 +13,6 @@ module Hoardable
13
13
  def version_class
14
14
  self
15
15
  end
16
-
17
- # This is needed to omit the pseudo row of 'tableoid' when using +ActiveRecord+’s +insert+.
18
- #
19
- # @!visibility private
20
- def scope_attributes
21
- super.without('tableoid')
22
- end
23
16
  end
24
17
 
25
18
  included do
@@ -34,20 +27,26 @@ module Hoardable
34
27
  self.table_name = "#{table_name.singularize}#{VERSION_TABLE_SUFFIX}"
35
28
 
36
29
  alias_method :readonly?, :persisted?
37
- alias_attribute :hoardable_operation, :_operation
38
- alias_attribute :hoardable_event_uuid, :_event_uuid
39
- alias_attribute :hoardable_during, :_during
30
+
31
+ %i[operation event_uuid during].each do |symbol|
32
+ define_method("hoardable_#{symbol}") { public_send("_#{symbol}") }
33
+ end
40
34
 
41
35
  # @!scope class
42
36
  # @!method trashed
43
37
  # @return [ActiveRecord<Object>]
44
38
  #
45
39
  # Returns only trashed +versions+ that are currently orphans.
46
- scope :trashed, lambda {
47
- left_outer_joins(:hoardable_source)
48
- .where(superclass.table_name => { superclass.primary_key => nil })
49
- .where(_operation: 'delete')
50
- }
40
+ scope(
41
+ :trashed,
42
+ lambda do
43
+ left_outer_joins(:hoardable_source).where(
44
+ superclass.table_name => {
45
+ superclass.primary_key => nil
46
+ }
47
+ ).where(_operation: "delete")
48
+ end
49
+ )
51
50
 
52
51
  # @!scope class
53
52
  # @!method at
@@ -61,7 +60,7 @@ module Hoardable
61
60
  # @return [ActiveRecord<Object>]
62
61
  #
63
62
  # Returns +versions+ that were trashed at the supplied +datetime+ or +time+.
64
- scope :trashed_at, ->(datetime) { where(_operation: 'insert').where(DURING_QUERY, datetime) }
63
+ scope :trashed_at, ->(datetime) { where(_operation: "insert").where(DURING_QUERY, datetime) }
65
64
 
66
65
  # @!scope class
67
66
  # @!method with_hoardable_event_uuid
@@ -76,17 +75,19 @@ module Hoardable
76
75
  # @return [ActiveRecord<Object>]
77
76
  #
78
77
  # Returns a limited +ActiveRecord+ scope of only the most recent version.
79
- scope :only_most_recent, -> { limit(1).reorder('UPPER(_during) DESC') }
78
+ scope :only_most_recent, -> { limit(1).reorder("UPPER(_during) DESC") }
80
79
  end
81
80
 
82
81
  # Reverts the parent +ActiveRecord+ instance to the saved attributes of this +version+. Raises
83
82
  # an error if the version is trashed.
84
83
  def revert!
85
- raise(Error, 'Version is trashed, cannot revert') unless hoardable_operation == 'update'
84
+ raise(Error, "Version is trashed, cannot revert") unless hoardable_operation == "update"
86
85
 
87
86
  transaction do
88
87
  hoardable_source.tap do |reverted|
89
- reverted.reload.update!(hoardable_source_attributes.without(self.class.superclass.primary_key))
88
+ reverted.reload.update!(
89
+ hoardable_source_attributes.without(self.class.superclass.primary_key, "hoardable_id")
90
+ )
90
91
  reverted.instance_variable_set(:@hoardable_version, self)
91
92
  reverted.run_callbacks(:reverted)
92
93
  end
@@ -96,29 +97,27 @@ module Hoardable
96
97
  # Inserts a trashed +version+ back into its parent +ActiveRecord+ table with its original
97
98
  # primary key. Raises an error if the version is not trashed.
98
99
  def untrash!
99
- raise(Error, 'Version is not trashed, cannot untrash') unless hoardable_operation == 'delete'
100
+ raise(Error, "Version is not trashed, cannot untrash") unless hoardable_operation == "delete"
100
101
 
101
102
  transaction do
102
103
  insert_untrashed_source.tap do |untrashed|
103
- untrashed.send('hoardable_client').insert_hoardable_version('insert') do
104
- untrashed.instance_variable_set(:@hoardable_version, self)
105
- untrashed.run_callbacks(:untrashed)
106
- end
104
+ untrashed
105
+ .send("hoardable_client")
106
+ .insert_hoardable_version("insert") do
107
+ untrashed.instance_variable_set(:@hoardable_version, self)
108
+ untrashed.run_callbacks(:untrashed)
109
+ end
107
110
  end
108
111
  end
109
112
  end
110
113
 
111
- DATA_KEYS.each do |key|
112
- define_method("hoardable_#{key}") do
113
- _data&.dig(key.to_s)
114
- end
115
- end
114
+ DATA_KEYS.each { |key| define_method("hoardable_#{key}") { _data&.dig(key.to_s) } }
116
115
 
117
116
  # Returns the +ActiveRecord+
118
117
  # {https://api.rubyonrails.org/classes/ActiveModel/Dirty.html#method-i-changes changes} that
119
118
  # were present during version creation.
120
119
  def changes
121
- _data&.dig('changes')
120
+ _data&.dig("changes")
122
121
  end
123
122
 
124
123
  private
@@ -132,7 +131,7 @@ module Hoardable
132
131
  def hoardable_source_attributes
133
132
  attributes.without(
134
133
  (self.class.column_names - self.class.superclass.column_names) +
135
- (SUPPORTS_VIRTUAL_COLUMNS ? self.class.columns.select(&:virtual?).map(&:name) : [])
134
+ self.class.columns.select(&:virtual?).map(&:name)
136
135
  )
137
136
  end
138
137
  end
data/lib/hoardable.rb CHANGED
@@ -1,20 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_record'
4
- require 'fx'
5
- require_relative 'hoardable/version'
6
- require_relative 'hoardable/engine'
7
- require_relative 'hoardable/finder_methods'
8
- require_relative 'hoardable/scopes'
9
- require_relative 'hoardable/error'
10
- require_relative 'hoardable/database_client'
11
- require_relative 'hoardable/source_model'
12
- require_relative 'hoardable/version_model'
13
- require_relative 'hoardable/model'
14
- require_relative 'hoardable/associations'
15
- require_relative 'hoardable/has_many'
16
- require_relative 'hoardable/belongs_to'
17
- require_relative 'hoardable/has_one'
18
- require_relative 'hoardable/has_rich_text'
19
- require_relative 'generators/hoardable/migration_generator'
20
- require_relative 'generators/hoardable/install_generator'
3
+ require "active_record"
4
+ require "fx"
5
+ require_relative "hoardable/version"
6
+ require_relative "hoardable/arel_visitors"
7
+ require_relative "hoardable/schema_statements"
8
+ require_relative "hoardable/schema_dumper"
9
+ require_relative "hoardable/engine"
10
+ require_relative "hoardable/finder_methods"
11
+ require_relative "hoardable/scopes"
12
+ require_relative "hoardable/error"
13
+ require_relative "hoardable/database_client"
14
+ require_relative "hoardable/source_model"
15
+ require_relative "hoardable/version_model"
16
+ require_relative "hoardable/model"
17
+ require_relative "hoardable/associations"
18
+ require_relative "hoardable/has_many"
19
+ require_relative "hoardable/belongs_to"
20
+ require_relative "hoardable/has_one"
21
+ require_relative "hoardable/has_rich_text"
22
+ require_relative "generators/hoardable/migration_generator"
23
+ require_relative "generators/hoardable/install_generator"
data/sig/hoardable.rbs CHANGED
@@ -1,3 +1,10 @@
1
+ # TypeProf 0.21.9
2
+
3
+ # Global variables
4
+ $thor_runner: false
5
+ $trace: false
6
+
7
+ # Classes
1
8
  module Hoardable
2
9
  VERSION: String
3
10
  DATA_KEYS: [:meta, :whodunit, :event_uuid]
@@ -18,7 +25,7 @@ module Hoardable
18
25
  def self.at: (untyped datetime) -> untyped
19
26
  def self.logger: -> untyped
20
27
 
21
- class Engine
28
+ class Engine < Rails::Engine
22
29
  end
23
30
 
24
31
  module FinderMethods
@@ -30,14 +37,7 @@ module Hoardable
30
37
  end
31
38
 
32
39
  module Scopes
33
- TABLEOID_AREL_CONDITIONS: Proc
34
- self.@klass: bot
35
-
36
- private
37
- def tableoid: -> untyped
38
-
39
- public
40
- attr_writer tableoid: untyped
40
+ extend ActiveSupport::Concern
41
41
  end
42
42
 
43
43
  class Error < StandardError
@@ -47,14 +47,25 @@ module Hoardable
47
47
  def initialize: (untyped source_table_name) -> void
48
48
  end
49
49
 
50
+ class UpdatedAtColumnMissingError < Error
51
+ def initialize: (untyped source_table_name) -> void
52
+ end
53
+
50
54
  class DatabaseClient
55
+ @generated_column_names: untyped
56
+ @refreshable_column_names: untyped
57
+
51
58
  attr_reader source_record: SourceModel
52
59
  def initialize: (SourceModel source_record) -> void
53
60
  def insert_hoardable_version: (untyped operation) -> untyped
54
61
  def source_primary_key: -> untyped
55
62
  def find_or_initialize_hoardable_event_uuid: -> untyped
56
63
  def initialize_version_attributes: (untyped operation) -> untyped
64
+ def has_one_find_conditions: (untyped reflection) -> Hash[String, nil]
65
+ def has_one_at_timestamp: -> untyped
57
66
  def source_attributes_without_primary_key: -> untyped
67
+ def generated_column_names: -> Array[untyped]
68
+ def refreshable_column_names: -> untyped
58
69
  def initialize_temporal_range: -> Range
59
70
  def initialize_hoardable_data: -> untyped
60
71
  def assign_hoardable_context: (:event_uuid | :meta | :whodunit key) -> nil
@@ -64,6 +75,7 @@ module Hoardable
64
75
  end
65
76
 
66
77
  module SourceModel
78
+ extend ActiveSupport::Concern
67
79
  include Scopes
68
80
  @hoardable_client: DatabaseClient
69
81
 
@@ -84,6 +96,8 @@ module Hoardable
84
96
  end
85
97
 
86
98
  module VersionModel
99
+ extend ActiveSupport::Concern
100
+
87
101
  def revert!: -> untyped
88
102
  def untrash!: -> untyped
89
103
  def changes: -> untyped
@@ -94,10 +108,10 @@ module Hoardable
94
108
 
95
109
  public
96
110
  def version_class: -> VersionModel
97
- def scope_attributes: -> untyped
98
111
  end
99
112
 
100
113
  module Model
114
+ extend ActiveSupport::Concern
101
115
  include VersionModel
102
116
  include SourceModel
103
117
  include Associations
@@ -108,6 +122,7 @@ module Hoardable
108
122
  end
109
123
 
110
124
  module Associations
125
+ extend ActiveSupport::Concern
111
126
  include HasRichText
112
127
  include BelongsTo
113
128
  include HasOne
@@ -115,6 +130,8 @@ module Hoardable
115
130
  end
116
131
 
117
132
  module HasMany
133
+ extend ActiveSupport::Concern
134
+
118
135
  def has_many: (*untyped args) -> untyped
119
136
 
120
137
  module HasManyExtension
@@ -129,6 +146,8 @@ module Hoardable
129
146
  end
130
147
 
131
148
  module BelongsTo
149
+ extend ActiveSupport::Concern
150
+
132
151
  def belongs_to: (*untyped args) -> nil
133
152
 
134
153
  private
@@ -136,25 +155,31 @@ module Hoardable
136
155
  end
137
156
 
138
157
  module HasOne
158
+ extend ActiveSupport::Concern
159
+
139
160
  def has_one: (*untyped args) -> nil
140
161
  end
141
162
 
142
163
  module HasRichText
164
+ extend ActiveSupport::Concern
165
+
143
166
  def has_rich_text: (untyped name, ?encrypted: false, ?hoardable: false) -> nil
144
167
  end
145
168
 
146
- class MigrationGenerator
169
+ class MigrationGenerator < ActiveRecord::Generators::Base
147
170
  @singularized_table_name: untyped
148
171
 
149
172
  def create_versions_table: -> untyped
173
+ def create_triggers: -> {versions_prevent_update: untyped, set_hoardable_id: untyped, prevent_update_hoardable_id: untyped}
150
174
  def foreign_key_type: -> String
151
175
  def primary_key: -> String
152
176
  def singularized_table_name: -> untyped
153
177
  end
154
178
 
155
- class InstallGenerator
179
+ class InstallGenerator < Rails::Generators::Base
156
180
  def create_initializer_file: -> untyped
157
181
  def create_migration_file: -> untyped
182
+ def create_functions: -> Array[String]
158
183
  def self.next_migration_number: (untyped dir) -> untyped
159
184
  end
160
185
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoardable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - justin talbott
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
11
+ date: 2024-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.1'
19
+ version: '7'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '8'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.1'
29
+ version: '7'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8'
@@ -36,7 +36,7 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '6.1'
39
+ version: '7'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '8'
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '6.1'
49
+ version: '7'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '8'
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: '6.1'
59
+ version: '7'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '8'
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '6.1'
69
+ version: '7'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '8'
@@ -117,7 +117,7 @@ executables: []
117
117
  extensions: []
118
118
  extra_rdoc_files: []
119
119
  files:
120
- - ".rubocop.yml"
120
+ - ".streerc"
121
121
  - ".tool-versions"
122
122
  - CHANGELOG.md
123
123
  - Gemfile
@@ -135,6 +135,7 @@ files:
135
135
  - lib/generators/hoardable/triggers/set_hoardable_id.sql
136
136
  - lib/generators/hoardable/triggers/versions_prevent_update.sql
137
137
  - lib/hoardable.rb
138
+ - lib/hoardable/arel_visitors.rb
138
139
  - lib/hoardable/associations.rb
139
140
  - lib/hoardable/belongs_to.rb
140
141
  - lib/hoardable/database_client.rb
@@ -147,6 +148,8 @@ files:
147
148
  - lib/hoardable/has_rich_text.rb
148
149
  - lib/hoardable/model.rb
149
150
  - lib/hoardable/rich_text.rb
151
+ - lib/hoardable/schema_dumper.rb
152
+ - lib/hoardable/schema_statements.rb
150
153
  - lib/hoardable/scopes.rb
151
154
  - lib/hoardable/source_model.rb
152
155
  - lib/hoardable/version.rb
@@ -167,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
170
  requirements:
168
171
  - - ">="
169
172
  - !ruby/object:Gem::Version
170
- version: 2.7.0
173
+ version: '3.0'
171
174
  required_rubygems_version: !ruby/object:Gem::Requirement
172
175
  requirements:
173
176
  - - ">="
174
177
  - !ruby/object:Gem::Version
175
178
  version: '0'
176
179
  requirements: []
177
- rubygems_version: 3.4.6
180
+ rubygems_version: 3.5.3
178
181
  signing_key:
179
182
  specification_version: 4
180
183
  summary: An ActiveRecord extension for versioning and soft-deletion of records in
data/.rubocop.yml DELETED
@@ -1,21 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.7
3
- NewCops: enable
4
- SuggestExtensions: false
5
-
6
- Layout/LineLength:
7
- Max: 120
8
-
9
- Metrics/ClassLength:
10
- Exclude:
11
- - 'test/**/*.rb'
12
-
13
- Metrics/BlockLength:
14
- Exclude:
15
- - 'test/**/*.rb'
16
-
17
- Style/DocumentDynamicEvalDefinition:
18
- Enabled: false
19
-
20
- Naming/PredicateName:
21
- Enabled: false