better_structure_sql 0.1.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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +41 -0
  3. data/LICENSE +21 -0
  4. data/README.md +557 -0
  5. data/app/controllers/better_structure_sql/application_controller.rb +61 -0
  6. data/app/controllers/better_structure_sql/schema_versions_controller.rb +243 -0
  7. data/app/helpers/better_structure_sql/schema_versions_helper.rb +46 -0
  8. data/app/views/better_structure_sql/schema_versions/index.html.erb +110 -0
  9. data/app/views/better_structure_sql/schema_versions/show.html.erb +186 -0
  10. data/app/views/layouts/better_structure_sql/application.html.erb +105 -0
  11. data/config/database.yml +3 -0
  12. data/config/routes.rb +12 -0
  13. data/lib/better_structure_sql/adapters/base_adapter.rb +234 -0
  14. data/lib/better_structure_sql/adapters/mysql_adapter.rb +476 -0
  15. data/lib/better_structure_sql/adapters/mysql_config.rb +32 -0
  16. data/lib/better_structure_sql/adapters/postgresql_adapter.rb +646 -0
  17. data/lib/better_structure_sql/adapters/postgresql_config.rb +25 -0
  18. data/lib/better_structure_sql/adapters/registry.rb +115 -0
  19. data/lib/better_structure_sql/adapters/sqlite_adapter.rb +644 -0
  20. data/lib/better_structure_sql/adapters/sqlite_config.rb +26 -0
  21. data/lib/better_structure_sql/configuration.rb +129 -0
  22. data/lib/better_structure_sql/database_version.rb +46 -0
  23. data/lib/better_structure_sql/dependency_resolver.rb +63 -0
  24. data/lib/better_structure_sql/dumper.rb +544 -0
  25. data/lib/better_structure_sql/engine.rb +28 -0
  26. data/lib/better_structure_sql/file_writer.rb +180 -0
  27. data/lib/better_structure_sql/formatter.rb +70 -0
  28. data/lib/better_structure_sql/generators/base.rb +33 -0
  29. data/lib/better_structure_sql/generators/domain_generator.rb +22 -0
  30. data/lib/better_structure_sql/generators/extension_generator.rb +23 -0
  31. data/lib/better_structure_sql/generators/foreign_key_generator.rb +43 -0
  32. data/lib/better_structure_sql/generators/function_generator.rb +33 -0
  33. data/lib/better_structure_sql/generators/index_generator.rb +50 -0
  34. data/lib/better_structure_sql/generators/materialized_view_generator.rb +31 -0
  35. data/lib/better_structure_sql/generators/pragma_generator.rb +23 -0
  36. data/lib/better_structure_sql/generators/sequence_generator.rb +27 -0
  37. data/lib/better_structure_sql/generators/table_generator.rb +126 -0
  38. data/lib/better_structure_sql/generators/trigger_generator.rb +54 -0
  39. data/lib/better_structure_sql/generators/type_generator.rb +47 -0
  40. data/lib/better_structure_sql/generators/view_generator.rb +27 -0
  41. data/lib/better_structure_sql/introspection/extensions.rb +29 -0
  42. data/lib/better_structure_sql/introspection/foreign_keys.rb +29 -0
  43. data/lib/better_structure_sql/introspection/functions.rb +29 -0
  44. data/lib/better_structure_sql/introspection/indexes.rb +29 -0
  45. data/lib/better_structure_sql/introspection/sequences.rb +29 -0
  46. data/lib/better_structure_sql/introspection/tables.rb +29 -0
  47. data/lib/better_structure_sql/introspection/triggers.rb +29 -0
  48. data/lib/better_structure_sql/introspection/types.rb +37 -0
  49. data/lib/better_structure_sql/introspection/views.rb +41 -0
  50. data/lib/better_structure_sql/introspection.rb +31 -0
  51. data/lib/better_structure_sql/manifest_generator.rb +65 -0
  52. data/lib/better_structure_sql/migration_patch.rb +196 -0
  53. data/lib/better_structure_sql/pg_version.rb +44 -0
  54. data/lib/better_structure_sql/railtie.rb +124 -0
  55. data/lib/better_structure_sql/schema_loader.rb +168 -0
  56. data/lib/better_structure_sql/schema_version.rb +86 -0
  57. data/lib/better_structure_sql/schema_versions.rb +213 -0
  58. data/lib/better_structure_sql/version.rb +5 -0
  59. data/lib/better_structure_sql/zip_generator.rb +81 -0
  60. data/lib/better_structure_sql.rb +81 -0
  61. data/lib/generators/better_structure_sql/install_generator.rb +44 -0
  62. data/lib/generators/better_structure_sql/migration_generator.rb +34 -0
  63. data/lib/generators/better_structure_sql/templates/README +49 -0
  64. data/lib/generators/better_structure_sql/templates/add_metadata_migration.rb.erb +25 -0
  65. data/lib/generators/better_structure_sql/templates/better_structure_sql.rb +46 -0
  66. data/lib/generators/better_structure_sql/templates/migration.rb.erb +26 -0
  67. data/lib/tasks/better_structure_sql.rake +190 -0
  68. metadata +299 -0
@@ -0,0 +1,190 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Clear tasks on reload to avoid duplicate task errors
4
+ if defined?(BETTER_STRUCTURE_SQL_TASKS_LOADED)
5
+ %w[
6
+ db:schema:dump_better
7
+ db:schema:load_better
8
+ db:schema:store
9
+ db:schema:versions
10
+ db:schema:cleanup
11
+ db:schema:restore
12
+ ].each do |task_name|
13
+ Rake::Task[task_name].clear if Rake::Task.task_defined?(task_name)
14
+ end
15
+ else
16
+ BETTER_STRUCTURE_SQL_TASKS_LOADED = true
17
+ end
18
+
19
+ namespace :db do
20
+ namespace :schema do
21
+ desc 'Dump the database schema to db/structure.sql using BetterStructureSql'
22
+ task dump_better: :environment do
23
+ require 'better_structure_sql'
24
+
25
+ dumper = BetterStructureSql::Dumper.new
26
+ output = dumper.dump(store_version: false)
27
+
28
+ puts "Schema dumped to #{BetterStructureSql.configuration.output_path}"
29
+
30
+ if output.is_a?(Hash)
31
+ # Multi-file mode
32
+ total_files = output.size
33
+ total_size = output.values.sum(&:bytesize)
34
+ puts "Total files: #{total_files}"
35
+ puts "Total size: #{format_bytes(total_size)}"
36
+ else
37
+ # Single-file mode
38
+ puts "Total size: #{format_bytes(output.bytesize)}"
39
+ end
40
+ end
41
+
42
+ # Formats byte count as human-readable string
43
+ #
44
+ # @param bytes [Integer] Byte count
45
+ # @return [String] Formatted string (e.g., "1.5 MB")
46
+ def format_bytes(bytes)
47
+ units = %w[B KB MB GB]
48
+ return "#{bytes} B" if bytes < 1024
49
+
50
+ exp = (Math.log(bytes) / Math.log(1024)).floor
51
+ exp = [exp, units.length - 1].min
52
+ size = bytes / (1024.0**exp)
53
+
54
+ format('%.2f %s', size, units[exp])
55
+ end
56
+
57
+ desc 'Load the database schema from db/structure.sql or directory (BetterStructureSql format)'
58
+ task load_better: %i[load_config check_protected_environments] do
59
+ require 'better_structure_sql'
60
+
61
+ config = BetterStructureSql.configuration
62
+ loader = BetterStructureSql::SchemaLoader.new(config)
63
+
64
+ begin
65
+ loader.load
66
+ rescue BetterStructureSql::SchemaLoader::LoadError => e
67
+ puts "Error loading schema: #{e.message}"
68
+ exit 1
69
+ end
70
+ end
71
+
72
+ desc 'Store current schema as a version in the database'
73
+ task store: :environment do
74
+ require 'better_structure_sql'
75
+
76
+ unless BetterStructureSql.configuration.enable_schema_versions
77
+ puts 'Schema versioning is not enabled.'
78
+ puts 'Enable it in config/initializers/better_structure_sql.rb:'
79
+ puts ' config.enable_schema_versions = true'
80
+ exit 1
81
+ end
82
+
83
+ version = BetterStructureSql::SchemaVersions.store_current
84
+
85
+ if version
86
+ puts 'Schema version stored successfully'
87
+ puts " ID: #{version.id}"
88
+ puts " Format: #{version.format_type}"
89
+ puts " Mode: #{version.output_mode}"
90
+ puts " Files: #{version.file_count || 1}"
91
+ puts " PostgreSQL: #{version.pg_version}"
92
+ puts " Size: #{version.formatted_size}"
93
+ puts " Total versions: #{BetterStructureSql::SchemaVersions.count}"
94
+ else
95
+ puts 'No schema file found to store'
96
+ exit 1
97
+ end
98
+ end
99
+
100
+ desc 'List all stored schema versions'
101
+ task versions: :environment do
102
+ require 'better_structure_sql'
103
+
104
+ unless BetterStructureSql.configuration.enable_schema_versions
105
+ puts 'Schema versioning is not enabled.'
106
+ exit 1
107
+ end
108
+
109
+ versions = BetterStructureSql::SchemaVersions.all_versions
110
+ if versions.empty?
111
+ puts 'No schema versions stored yet'
112
+ else
113
+ puts "Total versions: #{versions.count}"
114
+ puts "\nID Format Mode Files PostgreSQL Created Size"
115
+ puts '-' * 95
116
+ versions.each do |version|
117
+ puts format('%-6d %-7s %-13s %-7s %-15s %-20s %s',
118
+ version.id,
119
+ version.format_type,
120
+ version.output_mode,
121
+ version.file_count || 1,
122
+ version.pg_version,
123
+ version.created_at.strftime('%Y-%m-%d %H:%M:%S'),
124
+ version.formatted_size)
125
+ end
126
+ end
127
+ end
128
+
129
+ desc 'Cleanup old schema versions based on retention limit'
130
+ task cleanup: :environment do
131
+ require 'better_structure_sql'
132
+
133
+ unless BetterStructureSql.configuration.enable_schema_versions
134
+ puts 'Schema versioning is not enabled.'
135
+ exit 1
136
+ end
137
+
138
+ config = BetterStructureSql.configuration
139
+ if config.schema_versions_limit.zero?
140
+ puts 'Retention limit is set to unlimited (0). No cleanup needed.'
141
+ exit 0
142
+ end
143
+
144
+ deleted_count = BetterStructureSql::SchemaVersions.cleanup!
145
+ puts "Deleted #{deleted_count} old version(s)"
146
+ puts "Retained #{BetterStructureSql::SchemaVersions.count} version(s)"
147
+ puts "Retention limit: #{config.schema_versions_limit}"
148
+ end
149
+
150
+ desc 'Restore schema from stored version'
151
+ task :restore, [:version_id] => :environment do |_t, args|
152
+ require 'better_structure_sql'
153
+
154
+ version_id = args[:version_id] || ENV.fetch('VERSION_ID', nil)
155
+ raise 'Usage: rails db:schema:restore[VERSION_ID]' unless version_id
156
+
157
+ version = BetterStructureSql::SchemaVersions.find(version_id)
158
+ raise "Version #{version_id} not found" unless version
159
+
160
+ connection = ActiveRecord::Base.connection
161
+ connection.execute('SET client_min_messages TO warning')
162
+
163
+ if version.multi_file?
164
+ # Extract ZIP to temp directory
165
+ temp_dir = Rails.root.join('tmp', "schema_restore_#{version.id}")
166
+ FileUtils.rm_rf(temp_dir)
167
+
168
+ BetterStructureSql::ZipGenerator.extract_to_directory(version.zip_archive, temp_dir)
169
+
170
+ # Load from temp directory
171
+ loader = BetterStructureSql::SchemaLoader.new
172
+ loader.load(temp_dir)
173
+
174
+ # Cleanup
175
+ FileUtils.rm_rf(temp_dir)
176
+
177
+ puts "Schema version #{version.id} restored from #{version.file_count} files"
178
+ else
179
+ # Single file - load from content
180
+ connection.execute(version.content)
181
+
182
+ puts "Schema version #{version.id} restored"
183
+ end
184
+
185
+ puts " Format: #{version.format_type}"
186
+ puts " PostgreSQL: #{version.pg_version}"
187
+ puts " Size: #{version.formatted_size}"
188
+ end
189
+ end
190
+ end
metadata ADDED
@@ -0,0 +1,299 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: better_structure_sql
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - sebyx07
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-11-20 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: pg
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: rails
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '7.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rubyzip
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.0.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: database_cleaner-active_record
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.1'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.1'
68
+ - !ruby/object:Gem::Dependency
69
+ name: factory_bot_rails
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '6.2'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '6.2'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rails-controller-testing
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rspec
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.12'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.12'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec-rails
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '6.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '6.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rubocop
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.50'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.50'
138
+ - !ruby/object:Gem::Dependency
139
+ name: rubocop-performance
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.20'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.20'
152
+ - !ruby/object:Gem::Dependency
153
+ name: rubocop-rails
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '2.19'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.19'
166
+ - !ruby/object:Gem::Dependency
167
+ name: rubocop-rspec
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '3.0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: sqlite3
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '2.1'
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '2.1'
194
+ description: |
195
+ Pure Ruby database schema dumper for Rails applications supporting PostgreSQL, MySQL, and SQLite.
196
+ Generates clean, deterministic structure.sql files without pg_dump/mysqldump/sqlite3 CLI dependencies.
197
+ Supports both single-file and multi-file output for massive schemas with tens of thousands
198
+ of database objects. Includes schema versioning with ZIP storage and web UI for browsing versions.
199
+ email:
200
+ - sebyx07.pro@gmail.com
201
+ executables: []
202
+ extensions: []
203
+ extra_rdoc_files: []
204
+ files:
205
+ - CHANGELOG.md
206
+ - LICENSE
207
+ - README.md
208
+ - app/controllers/better_structure_sql/application_controller.rb
209
+ - app/controllers/better_structure_sql/schema_versions_controller.rb
210
+ - app/helpers/better_structure_sql/schema_versions_helper.rb
211
+ - app/views/better_structure_sql/schema_versions/index.html.erb
212
+ - app/views/better_structure_sql/schema_versions/show.html.erb
213
+ - app/views/layouts/better_structure_sql/application.html.erb
214
+ - config/database.yml
215
+ - config/routes.rb
216
+ - lib/better_structure_sql.rb
217
+ - lib/better_structure_sql/adapters/base_adapter.rb
218
+ - lib/better_structure_sql/adapters/mysql_adapter.rb
219
+ - lib/better_structure_sql/adapters/mysql_config.rb
220
+ - lib/better_structure_sql/adapters/postgresql_adapter.rb
221
+ - lib/better_structure_sql/adapters/postgresql_config.rb
222
+ - lib/better_structure_sql/adapters/registry.rb
223
+ - lib/better_structure_sql/adapters/sqlite_adapter.rb
224
+ - lib/better_structure_sql/adapters/sqlite_config.rb
225
+ - lib/better_structure_sql/configuration.rb
226
+ - lib/better_structure_sql/database_version.rb
227
+ - lib/better_structure_sql/dependency_resolver.rb
228
+ - lib/better_structure_sql/dumper.rb
229
+ - lib/better_structure_sql/engine.rb
230
+ - lib/better_structure_sql/file_writer.rb
231
+ - lib/better_structure_sql/formatter.rb
232
+ - lib/better_structure_sql/generators/base.rb
233
+ - lib/better_structure_sql/generators/domain_generator.rb
234
+ - lib/better_structure_sql/generators/extension_generator.rb
235
+ - lib/better_structure_sql/generators/foreign_key_generator.rb
236
+ - lib/better_structure_sql/generators/function_generator.rb
237
+ - lib/better_structure_sql/generators/index_generator.rb
238
+ - lib/better_structure_sql/generators/materialized_view_generator.rb
239
+ - lib/better_structure_sql/generators/pragma_generator.rb
240
+ - lib/better_structure_sql/generators/sequence_generator.rb
241
+ - lib/better_structure_sql/generators/table_generator.rb
242
+ - lib/better_structure_sql/generators/trigger_generator.rb
243
+ - lib/better_structure_sql/generators/type_generator.rb
244
+ - lib/better_structure_sql/generators/view_generator.rb
245
+ - lib/better_structure_sql/introspection.rb
246
+ - lib/better_structure_sql/introspection/extensions.rb
247
+ - lib/better_structure_sql/introspection/foreign_keys.rb
248
+ - lib/better_structure_sql/introspection/functions.rb
249
+ - lib/better_structure_sql/introspection/indexes.rb
250
+ - lib/better_structure_sql/introspection/sequences.rb
251
+ - lib/better_structure_sql/introspection/tables.rb
252
+ - lib/better_structure_sql/introspection/triggers.rb
253
+ - lib/better_structure_sql/introspection/types.rb
254
+ - lib/better_structure_sql/introspection/views.rb
255
+ - lib/better_structure_sql/manifest_generator.rb
256
+ - lib/better_structure_sql/migration_patch.rb
257
+ - lib/better_structure_sql/pg_version.rb
258
+ - lib/better_structure_sql/railtie.rb
259
+ - lib/better_structure_sql/schema_loader.rb
260
+ - lib/better_structure_sql/schema_version.rb
261
+ - lib/better_structure_sql/schema_versions.rb
262
+ - lib/better_structure_sql/version.rb
263
+ - lib/better_structure_sql/zip_generator.rb
264
+ - lib/generators/better_structure_sql/install_generator.rb
265
+ - lib/generators/better_structure_sql/migration_generator.rb
266
+ - lib/generators/better_structure_sql/templates/README
267
+ - lib/generators/better_structure_sql/templates/add_metadata_migration.rb.erb
268
+ - lib/generators/better_structure_sql/templates/better_structure_sql.rb
269
+ - lib/generators/better_structure_sql/templates/migration.rb.erb
270
+ - lib/tasks/better_structure_sql.rake
271
+ homepage: https://sebyx07.github.io/better_structure_sql/
272
+ licenses:
273
+ - MIT
274
+ metadata:
275
+ homepage_uri: https://sebyx07.github.io/better_structure_sql/
276
+ source_code_uri: https://github.com/sebyx07/better_structure_sql
277
+ documentation_uri: https://sebyx07.github.io/better_structure_sql/
278
+ changelog_uri: https://github.com/sebyx07/better_structure_sql/blob/main/CHANGELOG.md
279
+ bug_tracker_uri: https://github.com/sebyx07/better_structure_sql/issues
280
+ rubygems_mfa_required: 'true'
281
+ rdoc_options: []
282
+ require_paths:
283
+ - lib
284
+ required_ruby_version: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: 2.7.0
289
+ required_rubygems_version: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ requirements: []
295
+ rubygems_version: 3.6.2
296
+ specification_version: 4
297
+ summary: Clean database schema dumps for Rails (PostgreSQL, MySQL, SQLite) without
298
+ external tool dependencies
299
+ test_files: []