table_saw 3.1.0 → 3.3.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +9 -13
  3. data/.rubocop.yml +3 -3
  4. data/.tool-versions +1 -1
  5. data/Appraisals +6 -7
  6. data/Gemfile +7 -4
  7. data/Gemfile.lock +124 -110
  8. data/README.md +0 -2
  9. data/exe/table-saw +1 -0
  10. data/gemfiles/{activerecord_6.1.0.gemfile → activerecord_7.2.0.gemfile} +7 -5
  11. data/gemfiles/activerecord_7.2.0.gemfile.lock +216 -0
  12. data/gemfiles/{activerecord_7.1.0.gemfile → activerecord_8.0.0.gemfile} +7 -5
  13. data/gemfiles/activerecord_8.0.0.gemfile.lock +218 -0
  14. data/gemfiles/{activerecord_7.0.0.gemfile → activerecord_8.1.0.gemfile} +7 -5
  15. data/gemfiles/activerecord_8.1.0.gemfile.lock +244 -0
  16. data/lib/table_saw/configuration.rb +1 -1
  17. data/lib/table_saw/create_dump_file.rb +3 -3
  18. data/lib/table_saw/dependency_graph/belongs_to_directives.rb +1 -1
  19. data/lib/table_saw/dependency_graph/build.rb +2 -2
  20. data/lib/table_saw/dependency_graph/dump_table.rb +1 -1
  21. data/lib/table_saw/dependency_graph/has_many_directives.rb +1 -1
  22. data/lib/table_saw/formats/copy.rb +1 -1
  23. data/lib/table_saw/formats/insert.rb +1 -1
  24. data/lib/table_saw/manifest.rb +1 -1
  25. data/lib/table_saw/queries/execute_insert_statement.rb +6 -6
  26. data/lib/table_saw/queries/foreign_key_relationships.rb +1 -2
  27. data/lib/table_saw/queries/materialized_views.rb +1 -1
  28. data/lib/table_saw/queries/prepared_insert_statement.rb +1 -1
  29. data/lib/table_saw/queries/serial_sequences.rb +1 -1
  30. data/lib/table_saw/queries/serialize_sql_in_clause.rb +1 -5
  31. data/lib/table_saw/version.rb +1 -1
  32. data/lib/table_saw.rb +18 -2
  33. data/table_saw.gemspec +2 -2
  34. metadata +12 -17
  35. data/gemfiles/activerecord_6.1.0.gemfile.lock +0 -169
  36. data/gemfiles/activerecord_7.0.0.gemfile.lock +0 -169
  37. data/gemfiles/activerecord_7.1.0.gemfile.lock +0 -204
  38. data/lib/table_saw/connection.rb +0 -30
@@ -6,7 +6,7 @@ module TableSaw
6
6
  attr_accessor :dbname, :host, :port, :user, :password, :manifest, :output, :format
7
7
 
8
8
  def connection
9
- { dbname: dbname, host: host, port: port, user: user, password: password }
9
+ { adapter: 'postgresql', database: dbname, host:, port:, username: user, password: }
10
10
  end
11
11
 
12
12
  def url=(value)
@@ -51,9 +51,9 @@ module TableSaw
51
51
 
52
52
  Array(formatter.header).each { |line| write_to_file(line) }
53
53
 
54
- TableSaw::Connection.with do |conn|
55
- conn.copy_data "COPY (#{table.copy_statement}) TO STDOUT", formatter.coder do
56
- while (row = conn.get_copy_data)
54
+ TableSaw.connection_pool.with_connection do |conn|
55
+ conn.raw_connection.copy_data "COPY (#{table.copy_statement}) TO STDOUT", formatter.coder do
56
+ while (row = conn.raw_connection.get_copy_data)
57
57
  write_to_file formatter.dump_row(row)
58
58
  end
59
59
  end
@@ -37,7 +37,7 @@ module TableSaw
37
37
  def query_result(foreign_key)
38
38
  return [] unless directive.selectable?
39
39
 
40
- TableSaw::Connection.exec(
40
+ TableSaw.connection.exec_query(
41
41
  format(QUERY, column: foreign_key.column.primary_key, table_name: directive.table_name,
42
42
  clause: TableSaw::Queries::SerializeSqlInClause.new(directive.table_name,
43
43
  directive.primary_key,
@@ -33,7 +33,7 @@ module TableSaw
33
33
  if record
34
34
  dir.partial? ? record.fetch_associations(dir) : []
35
35
  else
36
- TableSaw::DependencyGraph::DumpTable.new(manifest: manifest, name: dir.table_name, partial: dir.partial?)
36
+ TableSaw::DependencyGraph::DumpTable.new(manifest:, name: dir.table_name, partial: dir.partial?)
37
37
  .tap { |table| records[dir.table_name] = table }.fetch_associations(dir)
38
38
  end
39
39
  end
@@ -41,7 +41,7 @@ module TableSaw
41
41
  def select_ids(table)
42
42
  return [] unless table.partial?
43
43
 
44
- TableSaw::Connection.exec(table.query).map { |row| row[TableSaw.schema_cache.primary_keys(table.name)] }
44
+ TableSaw.connection.exec_query(table.query).map { |row| row[TableSaw.schema_cache.primary_keys(table.name)] }
45
45
  end
46
46
  end
47
47
  end
@@ -15,7 +15,7 @@ module TableSaw
15
15
  def copy_statement
16
16
  if partial
17
17
  format 'select * from %{name} where %{clause}',
18
- name: name, clause: TableSaw::Queries::SerializeSqlInClause.new(name, primary_key, ids.to_a).call
18
+ name:, clause: TableSaw::Queries::SerializeSqlInClause.new(name, primary_key, ids.to_a).call
19
19
 
20
20
  else
21
21
  "select * from #{name}"
@@ -40,7 +40,7 @@ module TableSaw
40
40
  def query_result(foreign_key)
41
41
  return [] unless directive.selectable?
42
42
 
43
- TableSaw::Connection.exec(
43
+ TableSaw.connection.exec_query(
44
44
  TableSaw::DependencyGraph::BuildHasManyQuery.new(manifest, directive, foreign_key).call
45
45
  )
46
46
  end
@@ -20,7 +20,7 @@ module TableSaw
20
20
  def quoted_columns
21
21
  TableSaw.schema_cache.columns_hash(table_name)
22
22
  .each_key
23
- .map { |name| TableSaw::Connection.adapter.quote_column_name(name) }
23
+ .map { |name| TableSaw.connection.quote_column_name(name) }
24
24
  .join(', ')
25
25
  end
26
26
  end
@@ -22,7 +22,7 @@ module TableSaw
22
22
  private
23
23
 
24
24
  def prepared_statement
25
- @prepared_statement ||= TableSaw::Queries::PreparedInsertStatement.new(table_name, options: options).call
25
+ @prepared_statement ||= TableSaw::Queries::PreparedInsertStatement.new(table_name, options:).call
26
26
  end
27
27
  end
28
28
  end
@@ -66,7 +66,7 @@ module TableSaw
66
66
  def self.instance
67
67
  raise ArgumentError, 'Could not find manifest file' unless File.exist?(TableSaw.configuration.manifest)
68
68
 
69
- new(YAML.safe_load(File.read(TableSaw.configuration.manifest)))
69
+ new(YAML.safe_load_file(TableSaw.configuration.manifest))
70
70
  end
71
71
 
72
72
  attr_reader :config
@@ -22,13 +22,13 @@ module TableSaw
22
22
  .join(', ')
23
23
  end
24
24
 
25
- def adapter
26
- TableSaw::Connection.adapter
27
- end
28
-
29
25
  def quote_value(column, value)
30
- type = adapter.lookup_cast_type_from_column(column)
31
- adapter.quote(type.serialize(type.deserialize(value)))
26
+ type = if ActiveRecord.version >= Gem::Version.create('8.1.0')
27
+ column.fetch_cast_type(TableSaw.connection)
28
+ else
29
+ TableSaw.connection.lookup_cast_type_from_column(column)
30
+ end
31
+ TableSaw.connection.quote(type.serialize(type.deserialize(value)))
32
32
  end
33
33
  end
34
34
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'table_saw/foreign_key'
4
- require 'set'
5
4
 
6
5
  module TableSaw
7
6
  module Queries
@@ -36,7 +35,7 @@ module TableSaw
36
35
  private
37
36
 
38
37
  def result
39
- @result ||= TableSaw::Connection.exec(QUERY)
38
+ @result ||= TableSaw.connection.exec_query(QUERY)
40
39
  end
41
40
  end
42
41
  end
@@ -6,7 +6,7 @@ module TableSaw
6
6
  QUERY = 'select matviewname from pg_matviews order by matviewname'
7
7
 
8
8
  def call
9
- TableSaw::Connection.exec(QUERY).map { |row| row['matviewname'] }
9
+ TableSaw.connection.exec_query(QUERY).map { |row| row['matviewname'] }
10
10
  end
11
11
  end
12
12
  end
@@ -32,7 +32,7 @@ module TableSaw
32
32
 
33
33
  def column_names
34
34
  TableSaw.schema_cache.columns(table_name)
35
- .map { |column| TableSaw::Connection.adapter.quote_column_name(column.name) }
35
+ .map { |column| TableSaw.connection.quote_column_name(column.name) }
36
36
  .join(', ')
37
37
  end
38
38
 
@@ -18,7 +18,7 @@ module TableSaw
18
18
  SerialSequence = Struct.new(:name, :table, :column)
19
19
 
20
20
  def call
21
- TableSaw::Connection.exec(QUERY).each_with_object({}) do |row, memo|
21
+ TableSaw.connection.exec_query(QUERY).each_with_object({}) do |row, memo|
22
22
  memo[row['table']] = SerialSequence.new(row['sequence'], row['table'], row['column'])
23
23
  end
24
24
  end
@@ -23,13 +23,9 @@ module TableSaw
23
23
 
24
24
  def serialized_values
25
25
  values.map do |value|
26
- connection.quote_default_expression(value, db_column)
26
+ TableSaw.connection.quote_default_expression(value, db_column)
27
27
  end
28
28
  end
29
-
30
- def connection
31
- TableSaw::Connection.adapter
32
- end
33
29
  end
34
30
  end
35
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TableSaw
4
- VERSION = '3.1.0'
4
+ VERSION = '3.3.0'
5
5
  end
data/lib/table_saw.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_record'
4
+ require 'active_support/core_ext/string'
5
+
3
6
  require 'table_saw/configuration'
4
- require 'table_saw/connection'
5
7
  require 'table_saw/dependency_graph'
6
8
  require 'table_saw/information_schema'
7
9
  require 'table_saw/manifest'
@@ -29,6 +31,20 @@ module TableSaw
29
31
  end
30
32
 
31
33
  def self.schema_cache
32
- TableSaw::Connection.adapter.schema_cache
34
+ connection.schema_cache
35
+ end
36
+
37
+ def self.connection_pool
38
+ ActiveRecord::Base.connection_pool
39
+ end
40
+
41
+ # :nocov:
42
+ def self.connection
43
+ if ActiveRecord.gem_version < Gem::Version.new('7.2.0')
44
+ connection_pool.connection
45
+ else
46
+ connection_pool.lease_connection
47
+ end
33
48
  end
49
+ # :nocov:
34
50
  end
data/table_saw.gemspec CHANGED
@@ -23,10 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = ['table-saw']
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.required_ruby_version = '>= 3.0'
26
+ spec.required_ruby_version = '>= 3.2'
27
27
  spec.metadata['rubygems_mfa_required'] = 'true'
28
28
 
29
- spec.add_dependency 'activerecord', '>= 6.0'
29
+ spec.add_dependency 'activerecord', '>= 7.1'
30
30
  spec.add_dependency 'pg'
31
31
  spec.add_dependency 'thor'
32
32
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_saw
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hamed Asghari
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-12-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '6.0'
18
+ version: '7.1'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '6.0'
25
+ version: '7.1'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: pg
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +51,6 @@ dependencies:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
- description:
56
54
  email:
57
55
  - hasghari@gmail.com
58
56
  executables:
@@ -75,16 +73,15 @@ files:
75
73
  - bin/console
76
74
  - bin/setup
77
75
  - exe/table-saw
78
- - gemfiles/activerecord_6.1.0.gemfile
79
- - gemfiles/activerecord_6.1.0.gemfile.lock
80
- - gemfiles/activerecord_7.0.0.gemfile
81
- - gemfiles/activerecord_7.0.0.gemfile.lock
82
- - gemfiles/activerecord_7.1.0.gemfile
83
- - gemfiles/activerecord_7.1.0.gemfile.lock
76
+ - gemfiles/activerecord_7.2.0.gemfile
77
+ - gemfiles/activerecord_7.2.0.gemfile.lock
78
+ - gemfiles/activerecord_8.0.0.gemfile
79
+ - gemfiles/activerecord_8.0.0.gemfile.lock
80
+ - gemfiles/activerecord_8.1.0.gemfile
81
+ - gemfiles/activerecord_8.1.0.gemfile.lock
84
82
  - lib/table_saw.rb
85
83
  - lib/table_saw/associations.rb
86
84
  - lib/table_saw/configuration.rb
87
- - lib/table_saw/connection.rb
88
85
  - lib/table_saw/create_dump_file.rb
89
86
  - lib/table_saw/dependency_graph.rb
90
87
  - lib/table_saw/dependency_graph/add_directive.rb
@@ -115,7 +112,6 @@ licenses:
115
112
  - MIT
116
113
  metadata:
117
114
  rubygems_mfa_required: 'true'
118
- post_install_message:
119
115
  rdoc_options: []
120
116
  require_paths:
121
117
  - lib
@@ -123,15 +119,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
119
  requirements:
124
120
  - - ">="
125
121
  - !ruby/object:Gem::Version
126
- version: '3.0'
122
+ version: '3.2'
127
123
  required_rubygems_version: !ruby/object:Gem::Requirement
128
124
  requirements:
129
125
  - - ">="
130
126
  - !ruby/object:Gem::Version
131
127
  version: '0'
132
128
  requirements: []
133
- rubygems_version: 3.4.17
134
- signing_key:
129
+ rubygems_version: 3.6.9
135
130
  specification_version: 4
136
131
  summary: Create a postgres dump file from a subset of tables
137
132
  test_files: []
@@ -1,169 +0,0 @@
1
- PATH
2
- remote: ..
3
- specs:
4
- table_saw (3.1.0)
5
- activerecord (>= 6.0)
6
- pg
7
- thor
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actionpack (6.1.7.6)
13
- actionview (= 6.1.7.6)
14
- activesupport (= 6.1.7.6)
15
- rack (~> 2.0, >= 2.0.9)
16
- rack-test (>= 0.6.3)
17
- rails-dom-testing (~> 2.0)
18
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
- actionview (6.1.7.6)
20
- activesupport (= 6.1.7.6)
21
- builder (~> 3.1)
22
- erubi (~> 1.4)
23
- rails-dom-testing (~> 2.0)
24
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
- activemodel (6.1.7.6)
26
- activesupport (= 6.1.7.6)
27
- activerecord (6.1.7.6)
28
- activemodel (= 6.1.7.6)
29
- activesupport (= 6.1.7.6)
30
- activesupport (6.1.7.6)
31
- concurrent-ruby (~> 1.0, >= 1.0.2)
32
- i18n (>= 1.6, < 2)
33
- minitest (>= 5.1)
34
- tzinfo (~> 2.0)
35
- zeitwerk (~> 2.3)
36
- appraisal (2.5.0)
37
- bundler
38
- rake
39
- thor (>= 0.14.0)
40
- ast (2.4.2)
41
- builder (3.2.4)
42
- coderay (1.1.3)
43
- combustion (1.3.7)
44
- activesupport (>= 3.0.0)
45
- railties (>= 3.0.0)
46
- thor (>= 0.14.6)
47
- concurrent-ruby (1.2.2)
48
- crass (1.0.6)
49
- database_cleaner (2.0.2)
50
- database_cleaner-active_record (>= 2, < 3)
51
- database_cleaner-active_record (2.1.0)
52
- activerecord (>= 5.a)
53
- database_cleaner-core (~> 2.0.0)
54
- database_cleaner-core (2.0.1)
55
- diff-lcs (1.5.0)
56
- docile (1.4.0)
57
- erubi (1.12.0)
58
- i18n (1.14.1)
59
- concurrent-ruby (~> 1.0)
60
- json (2.7.1)
61
- language_server-protocol (3.17.0.3)
62
- loofah (2.22.0)
63
- crass (~> 1.0.2)
64
- nokogiri (>= 1.12.0)
65
- method_source (1.0.0)
66
- minitest (5.20.0)
67
- nokogiri (1.15.5-x86_64-darwin)
68
- racc (~> 1.4)
69
- nokogiri (1.15.5-x86_64-linux)
70
- racc (~> 1.4)
71
- parallel (1.24.0)
72
- parser (3.2.2.4)
73
- ast (~> 2.4.1)
74
- racc
75
- pg (1.5.4)
76
- pry (0.14.2)
77
- coderay (~> 1.1)
78
- method_source (~> 1.0)
79
- racc (1.7.3)
80
- rack (2.2.8)
81
- rack-test (2.1.0)
82
- rack (>= 1.3)
83
- rails-dom-testing (2.2.0)
84
- activesupport (>= 5.0.0)
85
- minitest
86
- nokogiri (>= 1.6)
87
- rails-html-sanitizer (1.6.0)
88
- loofah (~> 2.21)
89
- nokogiri (~> 1.14)
90
- railties (6.1.7.6)
91
- actionpack (= 6.1.7.6)
92
- activesupport (= 6.1.7.6)
93
- method_source
94
- rake (>= 12.2)
95
- thor (~> 1.0)
96
- rainbow (3.1.1)
97
- rake (13.0.3)
98
- regexp_parser (2.8.3)
99
- rexml (3.2.6)
100
- rspec (3.12.0)
101
- rspec-core (~> 3.12.0)
102
- rspec-expectations (~> 3.12.0)
103
- rspec-mocks (~> 3.12.0)
104
- rspec-core (3.12.2)
105
- rspec-support (~> 3.12.0)
106
- rspec-expectations (3.12.3)
107
- diff-lcs (>= 1.2.0, < 2.0)
108
- rspec-support (~> 3.12.0)
109
- rspec-mocks (3.12.6)
110
- diff-lcs (>= 1.2.0, < 2.0)
111
- rspec-support (~> 3.12.0)
112
- rspec-support (3.12.1)
113
- rubocop (1.59.0)
114
- json (~> 2.3)
115
- language_server-protocol (>= 3.17.0)
116
- parallel (~> 1.10)
117
- parser (>= 3.2.2.4)
118
- rainbow (>= 2.2.2, < 4.0)
119
- regexp_parser (>= 1.8, < 3.0)
120
- rexml (>= 3.2.5, < 4.0)
121
- rubocop-ast (>= 1.30.0, < 2.0)
122
- ruby-progressbar (~> 1.7)
123
- unicode-display_width (>= 2.4.0, < 3.0)
124
- rubocop-ast (1.30.0)
125
- parser (>= 3.2.1.0)
126
- rubocop-capybara (2.19.0)
127
- rubocop (~> 1.41)
128
- rubocop-factory_bot (2.24.0)
129
- rubocop (~> 1.33)
130
- rubocop-rspec (2.25.0)
131
- rubocop (~> 1.40)
132
- rubocop-capybara (~> 2.17)
133
- rubocop-factory_bot (~> 2.22)
134
- ruby-progressbar (1.13.0)
135
- scenic (1.7.0)
136
- activerecord (>= 4.0.0)
137
- railties (>= 4.0.0)
138
- simplecov (0.22.0)
139
- docile (~> 1.1)
140
- simplecov-html (~> 0.11)
141
- simplecov_json_formatter (~> 0.1)
142
- simplecov-html (0.12.3)
143
- simplecov_json_formatter (0.1.4)
144
- thor (1.3.0)
145
- tzinfo (2.0.6)
146
- concurrent-ruby (~> 1.0)
147
- unicode-display_width (2.5.0)
148
- zeitwerk (2.6.12)
149
-
150
- PLATFORMS
151
- x86_64-darwin-22
152
- x86_64-linux
153
-
154
- DEPENDENCIES
155
- activerecord (~> 6.1, < 6.2)
156
- appraisal
157
- bundler (~> 2.0)
158
- combustion (~> 1.3)
159
- database_cleaner (~> 2)
160
- pry
161
- rake (= 13.0.3)
162
- rspec (~> 3.0)
163
- rubocop-rspec (~> 2.3)
164
- scenic (~> 1.5)
165
- simplecov (~> 0.16)
166
- table_saw!
167
-
168
- BUNDLED WITH
169
- 2.4.13
@@ -1,169 +0,0 @@
1
- PATH
2
- remote: ..
3
- specs:
4
- table_saw (3.1.0)
5
- activerecord (>= 6.0)
6
- pg
7
- thor
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actionpack (7.0.8)
13
- actionview (= 7.0.8)
14
- activesupport (= 7.0.8)
15
- rack (~> 2.0, >= 2.2.4)
16
- rack-test (>= 0.6.3)
17
- rails-dom-testing (~> 2.0)
18
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
- actionview (7.0.8)
20
- activesupport (= 7.0.8)
21
- builder (~> 3.1)
22
- erubi (~> 1.4)
23
- rails-dom-testing (~> 2.0)
24
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
- activemodel (7.0.8)
26
- activesupport (= 7.0.8)
27
- activerecord (7.0.8)
28
- activemodel (= 7.0.8)
29
- activesupport (= 7.0.8)
30
- activesupport (7.0.8)
31
- concurrent-ruby (~> 1.0, >= 1.0.2)
32
- i18n (>= 1.6, < 2)
33
- minitest (>= 5.1)
34
- tzinfo (~> 2.0)
35
- appraisal (2.5.0)
36
- bundler
37
- rake
38
- thor (>= 0.14.0)
39
- ast (2.4.2)
40
- builder (3.2.4)
41
- coderay (1.1.3)
42
- combustion (1.3.7)
43
- activesupport (>= 3.0.0)
44
- railties (>= 3.0.0)
45
- thor (>= 0.14.6)
46
- concurrent-ruby (1.2.2)
47
- crass (1.0.6)
48
- database_cleaner (2.0.2)
49
- database_cleaner-active_record (>= 2, < 3)
50
- database_cleaner-active_record (2.1.0)
51
- activerecord (>= 5.a)
52
- database_cleaner-core (~> 2.0.0)
53
- database_cleaner-core (2.0.1)
54
- diff-lcs (1.5.0)
55
- docile (1.4.0)
56
- erubi (1.12.0)
57
- i18n (1.14.1)
58
- concurrent-ruby (~> 1.0)
59
- json (2.7.1)
60
- language_server-protocol (3.17.0.3)
61
- loofah (2.22.0)
62
- crass (~> 1.0.2)
63
- nokogiri (>= 1.12.0)
64
- method_source (1.0.0)
65
- minitest (5.20.0)
66
- nokogiri (1.15.5-x86_64-darwin)
67
- racc (~> 1.4)
68
- nokogiri (1.15.5-x86_64-linux)
69
- racc (~> 1.4)
70
- parallel (1.24.0)
71
- parser (3.2.2.4)
72
- ast (~> 2.4.1)
73
- racc
74
- pg (1.5.4)
75
- pry (0.14.2)
76
- coderay (~> 1.1)
77
- method_source (~> 1.0)
78
- racc (1.7.3)
79
- rack (2.2.8)
80
- rack-test (2.1.0)
81
- rack (>= 1.3)
82
- rails-dom-testing (2.2.0)
83
- activesupport (>= 5.0.0)
84
- minitest
85
- nokogiri (>= 1.6)
86
- rails-html-sanitizer (1.6.0)
87
- loofah (~> 2.21)
88
- nokogiri (~> 1.14)
89
- railties (7.0.8)
90
- actionpack (= 7.0.8)
91
- activesupport (= 7.0.8)
92
- method_source
93
- rake (>= 12.2)
94
- thor (~> 1.0)
95
- zeitwerk (~> 2.5)
96
- rainbow (3.1.1)
97
- rake (13.0.3)
98
- regexp_parser (2.8.3)
99
- rexml (3.2.6)
100
- rspec (3.12.0)
101
- rspec-core (~> 3.12.0)
102
- rspec-expectations (~> 3.12.0)
103
- rspec-mocks (~> 3.12.0)
104
- rspec-core (3.12.2)
105
- rspec-support (~> 3.12.0)
106
- rspec-expectations (3.12.3)
107
- diff-lcs (>= 1.2.0, < 2.0)
108
- rspec-support (~> 3.12.0)
109
- rspec-mocks (3.12.6)
110
- diff-lcs (>= 1.2.0, < 2.0)
111
- rspec-support (~> 3.12.0)
112
- rspec-support (3.12.1)
113
- rubocop (1.59.0)
114
- json (~> 2.3)
115
- language_server-protocol (>= 3.17.0)
116
- parallel (~> 1.10)
117
- parser (>= 3.2.2.4)
118
- rainbow (>= 2.2.2, < 4.0)
119
- regexp_parser (>= 1.8, < 3.0)
120
- rexml (>= 3.2.5, < 4.0)
121
- rubocop-ast (>= 1.30.0, < 2.0)
122
- ruby-progressbar (~> 1.7)
123
- unicode-display_width (>= 2.4.0, < 3.0)
124
- rubocop-ast (1.30.0)
125
- parser (>= 3.2.1.0)
126
- rubocop-capybara (2.19.0)
127
- rubocop (~> 1.41)
128
- rubocop-factory_bot (2.24.0)
129
- rubocop (~> 1.33)
130
- rubocop-rspec (2.25.0)
131
- rubocop (~> 1.40)
132
- rubocop-capybara (~> 2.17)
133
- rubocop-factory_bot (~> 2.22)
134
- ruby-progressbar (1.13.0)
135
- scenic (1.7.0)
136
- activerecord (>= 4.0.0)
137
- railties (>= 4.0.0)
138
- simplecov (0.22.0)
139
- docile (~> 1.1)
140
- simplecov-html (~> 0.11)
141
- simplecov_json_formatter (~> 0.1)
142
- simplecov-html (0.12.3)
143
- simplecov_json_formatter (0.1.4)
144
- thor (1.3.0)
145
- tzinfo (2.0.6)
146
- concurrent-ruby (~> 1.0)
147
- unicode-display_width (2.5.0)
148
- zeitwerk (2.6.12)
149
-
150
- PLATFORMS
151
- x86_64-darwin-22
152
- x86_64-linux
153
-
154
- DEPENDENCIES
155
- activerecord (~> 7.0, < 7.1)
156
- appraisal
157
- bundler (~> 2.0)
158
- combustion (~> 1.3)
159
- database_cleaner (~> 2)
160
- pry
161
- rake (= 13.0.3)
162
- rspec (~> 3.0)
163
- rubocop-rspec (~> 2.3)
164
- scenic (~> 1.5)
165
- simplecov (~> 0.16)
166
- table_saw!
167
-
168
- BUNDLED WITH
169
- 2.4.13