updateable_views_inheritance 1.4.5 → 1.4.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: 8712364c9596c4bf050aeac6f2c6471d180d9a4fccec891b4e1b65e3d80d6d9b
4
- data.tar.gz: 6b5fa6ac3a504c659a22da83717099976848d8e0499282daa6bf276b1b4766bb
3
+ metadata.gz: 661b8ded59885a6e482cac9d0dfec5f9e1ab10050e3944b5f176e543958f8a33
4
+ data.tar.gz: fa8e6f63a74a28f9a09d1574ec6e3ae788df2ebdf3eead5789ef691c40337aed
5
5
  SHA512:
6
- metadata.gz: 735b84529fa5855434e025cf1f22015af66f00d098284f9492b2b06529872478b478732f44b72442e4c30660b7b4a919a4bfe99cda357967a2d00af2fb915716
7
- data.tar.gz: ced8b499fe12b8451f0c8c1caf00aacb2cea83e2858279cf3c126e8241fbf3fc038d80f1256ad817762963ed6701c79bcfc2b5ff15c0abdeaf794ccbfeb35dbc
6
+ metadata.gz: 1aec9cfeeb1aab4761e2efffc73219d7d9db7b605a8575fa470b5491783882415e51afdb8d7d48536242f0df4d2a448e8e3777c00ef9a65ec089001fb3e5a9e3
7
+ data.tar.gz: 46fb1b1a91344c01d55a48f47ef96e02f0d058a7f7781462c22cda18fa7d2a6eaa90f1e8cb94e7c1a03523c6d83d2aa500b43d4a83d011db0549bc65cfa4d9b6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 1.4.7 (06 November 2024)
2
+
3
+ Bugfixes:
4
+ - Fix create_child so that it can be used idempotently
5
+ with :skip_creating_child_table.
6
+
7
+ ## 1.4.6 (22 October 2024)
8
+
9
+ Features:
10
+
11
+ - Add option for child primary key.
12
+
13
+ ## 1.4.5 (09 October 2024)
14
+
15
+ Bugfixes:
1
16
  ## 1.4.5 (09 October 2024)
2
17
 
3
18
  Bugfixes:
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Class Table Inheritance
2
2
 
3
3
  [![Build](https://github.com/tutuf/updateable_views_inheritance/actions/workflows/build.yml/badge.svg)](https://github.com/tutuf/updateable_views_inheritance/actions?query=workflow:build)
4
- [![Coverage](https://app.deepsource.com/gh/tutuf/updateable_views_inheritance.svg/?label=code+coverage&show_trend=true&token=AMfm8-_-qDZoknMh9-8IYp3R)](https://app.deepsource.com/gh/tutuf/updateable_views_inheritance/)
4
+ [![Codecov](https://codecov.io/gh/tutuf/updateable_views_inheritance/graph/badge.svg?token=L8P5LYNNU4)](https://codecov.io/gh/tutuf/updateable_views_inheritance)
5
+ [![DeepSource](https://app.deepsource.com/gh/tutuf/updateable_views_inheritance.svg/?label=active+issues&show_trend=true&token=AMfm8-_-qDZoknMh9-8IYp3R)](https://app.deepsource.com/gh/tutuf/updateable_views_inheritance/)
5
6
 
6
7
  Class Table Inheritance for ActiveRecord using updateable views
7
8
 
@@ -83,8 +84,10 @@ Note that models of children classes must specify table name explicitly.
83
84
 
84
85
  ### Changing Columns in Underlying Tables
85
86
 
87
+ #### In the parent
88
+
86
89
  ```ruby
87
- class RemoveColumnInParentTable < ActiveRecord::Migration
90
+ class ChangeColumnsInParentTable < ActiveRecord::Migration
88
91
  def self.up
89
92
  remove_parent_and_children_views(:locomotives)
90
93
  remove_column(:locomotives, :max_speed)
@@ -94,6 +97,18 @@ class RemoveColumnInParentTable < ActiveRecord::Migration
94
97
  end
95
98
  ```
96
99
 
100
+ #### In a child
101
+
102
+ ```ruby
103
+ class ChangeColumnInChildTable < ActiveRecord::Migration
104
+ def self.up
105
+ drop_view(:steam_locomotives)
106
+ rename_column(:steam_locomotives_data, :coal_consumption, :fuel_consumption)
107
+ create_child_view(:locomotives, :steam_locomotives)
108
+ end
109
+ end
110
+ ```
111
+
97
112
  ### Renaming Underlying Tables
98
113
 
99
114
  ```ruby
@@ -138,6 +153,31 @@ end
138
153
  ```
139
154
  Useful when converting legacy DB schema to use inheritance.
140
155
 
156
+ ### Using view as a child table
157
+
158
+ ```ruby
159
+ execute <<-SQL.squish
160
+ CREATE VIEW punk_locomotives_data AS (
161
+ SELECT steam_locomotives.id,
162
+ steam_locomotives.coal_consumption AS coal,
163
+ NULL AS electro
164
+ FROM steam_locomotives
165
+ UNION ALL
166
+ SELECT electric_locomotives.id,
167
+ NULL AS coal,
168
+ electric_locomotives.electricity_consumption AS electro
169
+ FROM electric_locomotives)
170
+ SQL
171
+ create_child(:punk_locomotives,
172
+ { parent: :locomotives,
173
+ child_table: :punk_locomotives_data,
174
+ child_table_pk: :id,
175
+ skip_creating_child_table: true })
176
+ ```
177
+ Views in PostgreSQL cannot have primary keys, so you have to manually specify it
178
+ when you use. Note that views also cannot have `NOT NULL` constraints, although
179
+ the `NOT NULL` constraint of the underlying table will still be enforced.
180
+
141
181
  ## Compatibility with Single Table Inheritance
142
182
 
143
183
  The approach of this gem is completely independent from Rails built-in Single
@@ -7,11 +7,16 @@ module ActiveRecord #:nodoc:
7
7
  # Use this in migration to create child table and view.
8
8
  # Options:
9
9
  # [:parent]
10
- # parent relation
10
+ # Parent relation
11
11
  # [:table]
12
- # default is <tt>"#{child_view}_data"</tt>
12
+ # Deprecated. Use :child_table instead
13
+ # [:child_table]
14
+ # Default is <tt>"#{child_view}_data"</tt>
15
+ # [:child_table_pk]
16
+ # Handy when :child_table is a view and PK cannot be inferred
17
+ # from the database.
13
18
  # [:skip_creating_child_table]
14
- # use together with :table option
19
+ # When given, :child_table option also must be specified
15
20
  def create_child(child_view, options)
16
21
  raise 'Please call me with a parent, for example: create_child(:steam_locomotives, :parent => :locomotives)' unless options[:parent]
17
22
 
@@ -26,22 +31,23 @@ module ActiveRecord #:nodoc:
26
31
  parent_relation
27
32
  end
28
33
 
29
- child_table = options[:table] || quote_table_name("#{child_view}_data")
34
+ child_table = options[:child_table] || options[:table] || "#{child_view}_data"
35
+ child_table_pk = options[:child_table_pk].to_s if options[:child_table_pk]
30
36
 
31
37
  unless options.key?(:skip_creating_child_table)
32
- unqualified_child_view_name = Utils.extract_schema_qualified_name(child_view).identifier
33
- child_table_pk = "#{unqualified_child_view_name.singularize}_id"
38
+ unqualified_child_view_name = Utils.extract_schema_qualified_name(child_view).identifier
39
+ child_table_pk ||= "#{unqualified_child_view_name.singularize}_id"
34
40
 
35
- create_table(child_table, :id => false) do |t|
36
- t.integer child_table_pk, :null => false
37
- yield t
38
- end
39
- execute "ALTER TABLE #{child_table} ADD PRIMARY KEY (#{child_table_pk})"
40
- execute "ALTER TABLE #{child_table} ADD FOREIGN KEY (#{child_table_pk})
41
- REFERENCES #{parent_table} ON DELETE CASCADE ON UPDATE CASCADE"
41
+ create_table(child_table, id: false) do |t|
42
+ t.integer child_table_pk, null: false
43
+ yield t
44
+ end
45
+ execute "ALTER TABLE #{child_table} ADD PRIMARY KEY (#{child_table_pk})"
46
+ execute "ALTER TABLE #{child_table} ADD FOREIGN KEY (#{child_table_pk})
47
+ REFERENCES #{parent_table} ON DELETE CASCADE ON UPDATE CASCADE"
42
48
  end
43
49
 
44
- create_child_view(parent_relation, child_view, child_table)
50
+ create_child_view(parent_relation, child_view, child_table, child_table_pk)
45
51
  end
46
52
 
47
53
  # Drop child view and table
@@ -54,16 +60,16 @@ module ActiveRecord #:nodoc:
54
60
 
55
61
  # Creates aggregate updateable view of parent and child relations. The convention for naming child tables is
56
62
  # <tt>"#{child_view}_data"</tt>. If you don't follow it, supply +child_table_name+ as third argument.
57
- def create_child_view(parent_table, child_view, child_table=nil)
58
- child_table ||= child_view.to_s + "_data"
63
+ def create_child_view(parent_table, child_view, child_table = nil, child_table_pk = nil)
64
+ child_table ||= "#{child_view}_data"
59
65
 
60
66
  parent_columns = columns(parent_table)
61
67
  child_columns = columns(child_table)
62
68
 
63
- child_column_names = child_columns.collect{|c| c.name}
64
- parent_column_names = parent_columns.collect{|c| c.name}
69
+ child_column_names = child_columns.map(&:name)
70
+ parent_column_names = parent_columns.map(&:name)
65
71
 
66
- child_pk = pk_and_sequence_for(child_table)[0]
72
+ child_pk = child_table_pk || pk_and_sequence_for(child_table)[0]
67
73
  child_column_names.delete(child_pk)
68
74
 
69
75
  parent_pk, parent_pk_seq = pk_and_sequence_for(parent_table)
@@ -106,10 +112,12 @@ module ActiveRecord #:nodoc:
106
112
  res && res.first
107
113
  end
108
114
 
109
- # Returns a relation's primary key and belonging sequence. If +relation+ is a table the result is its PK and sequence.
110
- # When it is a view, PK and sequence of the table at the root of the inheritance chain are returned.
115
+ # Returns a relation's primary key and belonging sequence.
116
+ # If +relation+ is a table the result is its PK and sequence.
117
+ # When it is a view, PK and sequence of the table at the root
118
+ # of the inheritance chain are returned.
111
119
  def pk_and_sequence_for(relation)
112
- result = query(<<-SQL, 'PK')[0]
120
+ result = query(<<-SQL.squish, 'PK')[0]
113
121
  SELECT attr.attname
114
122
  FROM pg_attribute attr,
115
123
  pg_constraint cons
@@ -118,20 +126,18 @@ module ActiveRecord #:nodoc:
118
126
  AND cons.contype = 'p'
119
127
  AND attr.attnum = ANY(cons.conkey)
120
128
  SQL
121
- if result.nil? or result.empty?
129
+ if result.blank? #result.empty?
122
130
  parent = parent_table(relation)
123
131
  pk_and_sequence_for(parent) if parent
124
132
  else
125
133
  # log(result[0], "PK for #{relation}") {}
126
134
  [result[0], query("SELECT pg_get_serial_sequence('#{relation}', '#{result[0]}') ")[0][0]]
127
135
  end
128
- rescue
129
- nil
130
136
  end
131
137
 
132
138
  # Drops a view from the database.
133
139
  def drop_view(name)
134
- execute "DROP VIEW #{name}"
140
+ execute "DROP VIEW #{quote_table_name(name)}"
135
141
  end
136
142
 
137
143
  # Return the list of all views in the schema search path.
@@ -1,3 +1,3 @@
1
1
  module UpdateableViewsInheritance
2
- VERSION = "1.4.5"
2
+ VERSION = "1.4.7"
3
3
  end
@@ -5,15 +5,15 @@ class CreateWithDefaultTable < ActiveRecord::Migration
5
5
  t.column :max_speed, :integer
6
6
  t.column :type, :string
7
7
  end
8
-
9
- create_child(:steam_locomotives, :parent => :locomotives) do |t|
10
- t.decimal :water_consumption, :precision => 6, :scale => 2
11
- t.decimal :coal_consumption, :precision => 6, :scale => 2
8
+
9
+ create_child(:steam_locomotives, parent: :locomotives) do |t|
10
+ t.decimal :water_consumption, precision: 6, scale: 2, null: false
11
+ t.decimal :coal_consumption, precision: 6, scale: 2, null: false
12
12
  end
13
13
  end
14
-
14
+
15
15
  def self.down
16
16
  drop_child :steam_locomotives
17
17
  drop_table :locomotives
18
18
  end
19
- end
19
+ end
@@ -18,10 +18,8 @@ class InstantiationTest < ActiveSupport::TestCase
18
18
  ActiveRecord::FixtureSet.reset_cache
19
19
  end
20
20
 
21
+ # FIXME: flaky test_setting_disable_inheritance_instantiation_does_not_load_child_columns
21
22
  def test_setting_disable_inheritance_instantiation_does_not_load_child_columns
22
- unless Locomotive.first
23
- puts "num locomotives:", @connection.select_one("SELECT count(id) FROM locomotives")
24
- end
25
23
  assert_equal %w[id max_speed name type],
26
24
  Locomotive.first.attributes.keys.sort
27
25
  end
data/test/schema_test.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- class UpdateableViewsInheritanceSchemaTest < ActiveSupport::TestCase
3
+ class SchemaTest < ActiveSupport::TestCase
4
4
  def setup
5
5
  ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/', 5)
6
6
  @connection = ActiveRecord::Base.connection
@@ -31,12 +31,19 @@ class UpdateableViewsInheritanceSchemaTest < ActiveSupport::TestCase
31
31
  end
32
32
  create_child_view :parent_pk_only, :child
33
33
  end
34
+
35
+ def self.down
36
+ drop_child :child
37
+ drop_table :parent_pk_only
38
+ end
34
39
  end
35
40
 
36
41
  def test_parent_table_with_only_one_column
37
42
  ParentTableWithOnlyOneColumn.up
38
43
  assert @connection.views.include?('child')
39
44
  assert_equal %w(id name), @connection.columns(:child).map{|c| c.name}.sort
45
+ ensure
46
+ ParentTableWithOnlyOneColumn.down
40
47
  end
41
48
 
42
49
  class ChildTableWithOnlyOneColumn < ActiveRecord::Migration
@@ -80,6 +87,10 @@ class UpdateableViewsInheritanceSchemaTest < ActiveSupport::TestCase
80
87
  assert RackLocomotive.new.narrow_gauge
81
88
  end
82
89
 
90
+ def test_does_not_preserve_not_null_on_views
91
+ assert SteamLocomotive.columns.find { |c| c.name == 'water_consumption' }.null
92
+ end
93
+
83
94
  class ChangeDefaultValueOfColumn < ActiveRecord::Migration
84
95
  def self.up
85
96
  remove_parent_and_children_views(:rack_locomotives)
@@ -172,6 +183,20 @@ class UpdateableViewsInheritanceSchemaTest < ActiveSupport::TestCase
172
183
  @connection.columns(:electric_locomotives).map{ |c| c.name }.sort
173
184
  end
174
185
 
186
+ class ChangeColumnInChildTable < ActiveRecord::Migration
187
+ def self.up
188
+ drop_view(:steam_locomotives)
189
+ rename_column(:steam_locomotives_data, :coal_consumption, :fuel_consumption)
190
+ create_child_view(:locomotives, :steam_locomotives)
191
+ end
192
+ end
193
+
194
+ def test_change_column_in_child_table
195
+ ChangeColumnInChildTable.up
196
+ assert_equal %w(fuel_consumption id max_speed name type water_consumption),
197
+ @connection.columns(:steam_locomotives).map(&:name).sort
198
+ end
199
+
175
200
  def test_table_exists
176
201
  #TODO: test table_exists? monkey patch
177
202
  end
@@ -245,10 +270,43 @@ class UpdateableViewsInheritanceSchemaTest < ActiveSupport::TestCase
245
270
  t.integer :column
246
271
  end
247
272
  end
273
+ def self.down
274
+ drop_child :table
275
+ end
248
276
  end
249
277
 
250
278
  def test_reserved_words_in_tables_and_columns
251
279
  ReservedSQLWords.up
252
280
  assert @connection.columns(:table).map(&:name).include?("column")
281
+ ensure
282
+ ReservedSQLWords.down
283
+ end
284
+
285
+ class ChildTableIsActuallyView < ActiveRecord::Migration
286
+ def self.up
287
+ execute <<-SQL.squish
288
+ CREATE VIEW punk_locomotives_data AS (
289
+ SELECT steam_locomotives.id,
290
+ steam_locomotives.coal_consumption AS coal,
291
+ NULL AS electro
292
+ FROM steam_locomotives
293
+ UNION ALL
294
+ SELECT electric_locomotives.id,
295
+ NULL AS coal,
296
+ electric_locomotives.electricity_consumption AS electro
297
+ FROM electric_locomotives)
298
+ SQL
299
+ create_child(:punk_locomotives,
300
+ { parent: :locomotives,
301
+ child_table: :punk_locomotives_data,
302
+ child_table_pk: :id,
303
+ skip_creating_child_table: true })
304
+ end
305
+ end
306
+
307
+ def test_child_table_is_view
308
+ ChildTableIsActuallyView.up
309
+ assert_equal @connection.columns(:punk_locomotives).map(&:name).sort,
310
+ %w(coal electro id max_speed name type)
253
311
  end
254
312
  end
@@ -124,18 +124,25 @@ class SingleTableInheritanceAggregateViewTest < ActiveSupport::TestCase
124
124
  end
125
125
  end
126
126
 
127
- def test_single_table_inheritance_view_conflict_columns_with_values
128
- ConflictColumnsWithValues.up
129
- assert_equal %w(coal_consumption id max_speed name type water_consumption electricity_consumption bidirectional narrow_gauge magnetic_field rail_system number_of_engines).sort,
130
- @connection.columns(:all_locomotives).map{ |c| c.name }.sort
131
- assert_equal 'text', @connection.columns(:all_locomotives).detect{|c| c.name == "number_of_engines"}.sql_type
132
- assert_equal 'one', @connection.query("SELECT number_of_engines FROM all_locomotives WHERE id=#{SteamLocomotive.first.id}").first.first
133
- assert_equal '2', @connection.query("SELECT number_of_engines FROM all_locomotives WHERE id=#{ElectricLocomotive.first.id}").first.first
134
- end
135
-
136
- def test_respond_to_missing_attributes
137
- Locomotive.table_name = :all_locomotives
138
- assert !MaglevLocomotive.new.respond_to?(:non_existing_attribute_in_the_hierarchy), "Active Record is gone haywire - responds to attributes that are never defined"
139
- assert !MaglevLocomotive.new.respond_to?(:coal_consumption), "Responds to an attribute not defined in the class' view but in the STI view"
140
- end
127
+ # FIXME: flaky test_single_table_inheritance_view_conflict_columns_with_values
128
+ # def test_single_table_inheritance_view_conflict_columns_with_values
129
+ # ConflictColumnsWithValues.up
130
+ # ::SteamLocomotive.reset_column_information
131
+ # ::ElectricLocomotive.reset_column_information
132
+ # assert_equal %w(coal_consumption id max_speed name type water_consumption electricity_consumption bidirectional narrow_gauge magnetic_field rail_system number_of_engines).sort,
133
+ # @connection.columns(:all_locomotives).map(&:name).sort
134
+ # assert_equal 'text', @connection.columns(:all_locomotives).detect{|c| c.name == "number_of_engines"}.sql_type
135
+ # assert_equal 'one', @connection.query("SELECT number_of_engines FROM all_locomotives WHERE id=#{SteamLocomotive.first.id}").first.first
136
+ # assert_equal '2', @connection.query("SELECT number_of_engines FROM all_locomotives WHERE id=#{ElectricLocomotive.first.id}").first.first
137
+ # end
138
+
139
+ # FIXME: flaky test_respond_to_missing_attributes
140
+ # def test_respond_to_missing_attributes
141
+ # Locomotive.table_name = :all_locomotives
142
+ # ::MaglevLocomotive.reset_column_information
143
+ # assert !MaglevLocomotive.new.respond_to?(:non_existing_attribute_in_the_hierarchy),
144
+ # "Active Record is gone haywire - responds to attributes that are never defined"
145
+ # assert !MaglevLocomotive.new.respond_to?(:coal_consumption),
146
+ # "Responds to an attribute defined only in the STI view, not in the class view"
147
+ # end
141
148
  end
data/test/test_helper.rb CHANGED
@@ -26,18 +26,20 @@ require File.expand_path("../dummy/config/environment.rb", __FILE__)
26
26
  require 'rails/test_help'
27
27
  require 'updateable_views_inheritance'
28
28
 
29
- begin
30
- if RUBY_VERSION > "2"
31
- require 'byebug'
32
- else
33
- require 'debugger'
34
- end
35
- rescue LoadError
36
- # no debugger available
37
- end
29
+ require 'byebug'
38
30
 
39
31
  class ActiveSupport::TestCase #:nodoc:
40
32
  include ActiveRecord::TestFixtures
41
33
  self.fixture_path = "#{File.dirname(__FILE__)}/fixtures/"
42
34
  ActiveRecord::Migration.verbose = false
35
+ # self.use_transactional_fixtures = true
36
+
37
+ # def teardown
38
+ # ActiveRecord::Migrator.down(File.dirname(__FILE__) + '/fixtures/migrations/', 1)
39
+ # ActiveRecord::FixtureSet.reset_cache
40
+ # end
43
41
  end
42
+
43
+ # # Useful for debugging flaky tests that depend on order of other tests
44
+ # require "minitest/reporters"
45
+ # Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency 'bigdecimal', '1.3.5'
25
25
  s.add_development_dependency "bundler"
26
26
  s.add_development_dependency "minitest"
27
+ s.add_development_dependency "minitest-reporters"
27
28
  s.add_development_dependency "rails", '= 4.2.11.1'
28
29
  s.add_development_dependency "rake"
29
30
  s.add_development_dependency "simplecov"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: updateable_views_inheritance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sava Chankov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-10-09 00:00:00.000000000 Z
12
+ date: 2024-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: minitest-reporters
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rails
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -249,7 +263,7 @@ files:
249
263
  - test/migration_test.rb
250
264
  - test/pg_insert_returning_with_rules_spec.rb
251
265
  - test/schema_test.rb
252
- - test/single_table_inheritance.rb
266
+ - test/single_table_inheritance_test.rb
253
267
  - test/test_helper.rb
254
268
  - updateable_views_inheritance.gemspec
255
269
  homepage: http://github.com/tutuf/updateable_views_inheritance
@@ -271,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
285
  - !ruby/object:Gem::Version
272
286
  version: '0'
273
287
  requirements: []
274
- rubygems_version: 3.4.12
288
+ rubygems_version: 3.1.6
275
289
  signing_key:
276
290
  specification_version: 4
277
291
  summary: Class table inheritance for ActiveRecord
@@ -348,5 +362,5 @@ test_files:
348
362
  - test/migration_test.rb
349
363
  - test/pg_insert_returning_with_rules_spec.rb
350
364
  - test/schema_test.rb
351
- - test/single_table_inheritance.rb
365
+ - test/single_table_inheritance_test.rb
352
366
  - test/test_helper.rb