declare_schema 1.5.0.pre.1 → 2.1.0.pre.1

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +19 -0
  3. data/.devcontainer/boot.sh +1 -0
  4. data/.devcontainer/devcontainer.json +55 -0
  5. data/.devcontainer/docker-compose.yml +40 -0
  6. data/.github/workflows/declare_schema_build.yml +35 -11
  7. data/Appraisals +2 -10
  8. data/CHANGELOG.md +8 -1
  9. data/CODE-OF-CONDUCT.md +16 -0
  10. data/CONTRIBUTING.md +46 -0
  11. data/Gemfile +6 -1
  12. data/Gemfile.lock +88 -78
  13. data/README.md +38 -14
  14. data/Rakefile +5 -15
  15. data/catalog-info.yaml +35 -0
  16. data/config/brakeman.ignore +2 -2
  17. data/declare_schema.gemspec +1 -1
  18. data/gemfiles/{rails_6_1_sqlite3.gemfile → rails_6_1.gemfile} +3 -0
  19. data/gemfiles/{rails_7_0_sqlite3.gemfile → rails_7_0.gemfile} +3 -0
  20. data/gemfiles/{rails_7_1_sqlite3.gemfile → rails_7_1.gemfile} +3 -0
  21. data/gemfiles/{rails_7_0_mysql2.gemfile → rails_7_2.gemfile} +4 -1
  22. data/lib/declare_schema/command.rb +2 -8
  23. data/lib/declare_schema/model/column.rb +1 -1
  24. data/lib/declare_schema/model/foreign_key_definition.rb +9 -12
  25. data/lib/declare_schema/model/index_definition.rb +16 -8
  26. data/lib/declare_schema/model.rb +10 -14
  27. data/lib/declare_schema/schema_change/base.rb +4 -0
  28. data/lib/declare_schema/schema_change/primary_key_change.rb +19 -6
  29. data/lib/declare_schema/version.rb +1 -1
  30. data/lib/declare_schema.rb +20 -8
  31. data/lib/generators/declare_schema/migration/migration_generator.rb +17 -8
  32. data/lib/generators/declare_schema/migration/migrator.rb +16 -9
  33. data/spec/fixtures/migrations/mysql2/will_generate_unique_constraint_names_rails_6.txt +15 -0
  34. data/spec/fixtures/migrations/mysql2/will_generate_unique_constraint_names_rails_7.txt +15 -0
  35. data/spec/fixtures/migrations/postgresql/will_generate_unique_constraint_names_rails_6.txt +15 -0
  36. data/spec/fixtures/migrations/postgresql/will_generate_unique_constraint_names_rails_7.txt +15 -0
  37. data/spec/fixtures/migrations/sqlite3/will_generate_unique_constraint_names_rails_6.txt +15 -0
  38. data/spec/fixtures/migrations/sqlite3/will_generate_unique_constraint_names_rails_7.txt +15 -0
  39. data/spec/lib/declare_schema/api_spec.rb +1 -7
  40. data/spec/lib/declare_schema/field_declaration_dsl_spec.rb +3 -3
  41. data/spec/lib/declare_schema/field_spec_spec.rb +68 -45
  42. data/spec/lib/declare_schema/generator_spec.rb +29 -71
  43. data/spec/lib/declare_schema/interactive_primary_key_spec.rb +3 -10
  44. data/spec/lib/declare_schema/migration_generator_spec.rb +249 -255
  45. data/spec/lib/declare_schema/model/column_spec.rb +89 -41
  46. data/spec/lib/declare_schema/model/foreign_key_definition_spec.rb +14 -8
  47. data/spec/lib/declare_schema/model/habtm_model_shim_spec.rb +4 -9
  48. data/spec/lib/declare_schema/model/index_definition_spec.rb +18 -10
  49. data/spec/lib/declare_schema/model/table_options_definition_spec.rb +11 -11
  50. data/spec/lib/declare_schema/schema_change/base_spec.rb +5 -7
  51. data/spec/lib/declare_schema/schema_change/column_add_spec.rb +1 -3
  52. data/spec/lib/declare_schema/schema_change/column_change_spec.rb +1 -3
  53. data/spec/lib/declare_schema/schema_change/column_remove_spec.rb +1 -3
  54. data/spec/lib/declare_schema/schema_change/column_rename_spec.rb +1 -3
  55. data/spec/lib/declare_schema/schema_change/foreign_key_add_spec.rb +1 -3
  56. data/spec/lib/declare_schema/schema_change/foreign_key_remove_spec.rb +1 -3
  57. data/spec/lib/declare_schema/schema_change/index_add_spec.rb +1 -3
  58. data/spec/lib/declare_schema/schema_change/index_remove_spec.rb +1 -3
  59. data/spec/lib/declare_schema/schema_change/primary_key_change_spec.rb +39 -15
  60. data/spec/lib/declare_schema/schema_change/table_add_spec.rb +1 -3
  61. data/spec/lib/declare_schema/schema_change/table_change_spec.rb +1 -3
  62. data/spec/lib/declare_schema/schema_change/table_remove_spec.rb +1 -3
  63. data/spec/lib/declare_schema/schema_change/table_rename_spec.rb +1 -3
  64. data/spec/lib/generators/declare_schema/migration/migrator_spec.rb +0 -4
  65. data/spec/spec_helper.rb +3 -0
  66. data/spec/support/adapter_specific_test_helpers.rb +25 -0
  67. data/spec/{lib/declare_schema → support}/prepare_testapp.rb +3 -1
  68. data/spec/support/test_app_spec_helpers.rb +7 -0
  69. metadata +24 -11
  70. data/gemfiles/rails_6_1_mysql2.gemfile +0 -23
  71. data/gemfiles/rails_7_1_mysql2.gemfile +0 -23
@@ -3,9 +3,7 @@
3
3
  require_relative '../../../../lib/declare_schema/schema_change/table_remove'
4
4
 
5
5
  RSpec.describe DeclareSchema::SchemaChange::TableRemove do
6
- before do
7
- load File.expand_path('../prepare_testapp.rb', __dir__)
8
- end
6
+ include_context 'prepare test app'
9
7
 
10
8
  let(:table_name) { 'networks' }
11
9
  let(:add_table_back) { "create table networks(\n)" }
@@ -3,9 +3,7 @@
3
3
  require_relative '../../../../lib/declare_schema/schema_change/table_rename'
4
4
 
5
5
  RSpec.describe DeclareSchema::SchemaChange::TableRename do
6
- before do
7
- load File.expand_path('../prepare_testapp.rb', __dir__)
8
- end
6
+ include_context 'prepare test app'
9
7
 
10
8
  let(:old_name) { 'networks' }
11
9
  let(:new_name) { 'customers' }
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- begin
4
- require 'mysql2'
5
- rescue LoadError
6
- end
7
3
  require 'rails'
8
4
  require 'rails/generators'
9
5
  require 'generators/declare_schema/migration/migrator'
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,11 @@ require 'bundler/setup'
4
4
  require 'declare_schema'
5
5
  require 'climate_control'
6
6
  require 'pry'
7
+ require 'rspec/its'
7
8
 
8
9
  require_relative "./support/acceptance_spec_helpers"
10
+ require_relative "./support/adapter_specific_test_helpers"
11
+ require_relative "./support/test_app_spec_helpers"
9
12
 
10
13
  RSpec.configure do |config|
11
14
  config.include AcceptanceSpecHelpers
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'skip if' do
4
+ around do |spec|
5
+ if current_adapter == adapter
6
+ spec.skip
7
+ else
8
+ spec.run
9
+ end
10
+ end
11
+ end
12
+
13
+ RSpec.shared_context 'skip unless' do
14
+ around do |spec|
15
+ if current_adapter != adapter
16
+ spec.skip
17
+ else
18
+ spec.run
19
+ end
20
+ end
21
+ end
22
+
23
+ def current_adapter(model_class = ActiveRecord::Base)
24
+ DeclareSchema.current_adapter(model_class)
25
+ end
@@ -21,7 +21,9 @@ Rails::Generators.configure!(Rails.application.config.generators)
21
21
  ActiveRecord::Base.connection.schema_cache.clear!
22
22
 
23
23
  (ActiveRecord::Base.connection.tables - Generators::DeclareSchema::Migration::Migrator.always_ignore_tables).each do |table|
24
- ActiveRecord::Base.connection.execute("DROP TABLE #{ActiveRecord::Base.connection.quote_table_name(table)}")
24
+ ActiveRecord::Base.connection.execute("SET FOREIGN_KEY_CHECKS = 0") rescue nil # rubocop:disable Style/RescueModifier
25
+ ActiveRecord::Base.connection.execute("DROP TABLE #{ActiveRecord::Base.connection.quote_table_name(table)} #{current_adapter != 'sqlite3' ? 'CASCADE': ''}")
26
+ ActiveRecord::Base.connection.execute("SET FOREIGN_KEY_CHECKS = 1") rescue nil # rubocop:disable Style/RescueModifier
25
27
  end
26
28
 
27
29
  ActiveRecord::Base.send(:descendants).each do |model|
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'prepare test app' do
4
+ before do
5
+ load File.expand_path('./prepare_testapp.rb', __dir__)
6
+ end
7
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: declare_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0.pre.1
4
+ version: 2.1.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Invoca Development adapted from hobo_fields by Tom Locke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-12 00:00:00.000000000 Z
11
+ date: 2024-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '6.0'
27
27
  description: Declare your Rails/active_record model schemas and have database migrations
28
28
  generated for you!
29
29
  email: development@invoca.com
@@ -32,6 +32,10 @@ executables:
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
+ - ".devcontainer/Dockerfile"
36
+ - ".devcontainer/boot.sh"
37
+ - ".devcontainer/devcontainer.json"
38
+ - ".devcontainer/docker-compose.yml"
35
39
  - ".github/CODEOWNERS"
36
40
  - ".github/workflows/declare_schema_build.yml"
37
41
  - ".github/workflows/gem_release.yml"
@@ -41,21 +45,22 @@ files:
41
45
  - ".ruby-version"
42
46
  - Appraisals
43
47
  - CHANGELOG.md
48
+ - CODE-OF-CONDUCT.md
49
+ - CONTRIBUTING.md
44
50
  - Gemfile
45
51
  - Gemfile.lock
46
52
  - LICENSE.txt
47
53
  - README.md
48
54
  - Rakefile
49
55
  - bin/declare_schema
56
+ - catalog-info.yaml
50
57
  - config/brakeman.ignore
51
58
  - declare_schema.gemspec
52
59
  - gemfiles/.bundle/config
53
- - gemfiles/rails_6_1_mysql2.gemfile
54
- - gemfiles/rails_6_1_sqlite3.gemfile
55
- - gemfiles/rails_7_0_mysql2.gemfile
56
- - gemfiles/rails_7_0_sqlite3.gemfile
57
- - gemfiles/rails_7_1_mysql2.gemfile
58
- - gemfiles/rails_7_1_sqlite3.gemfile
60
+ - gemfiles/rails_6_1.gemfile
61
+ - gemfiles/rails_7_0.gemfile
62
+ - gemfiles/rails_7_1.gemfile
63
+ - gemfiles/rails_7_2.gemfile
59
64
  - lib/declare_schema.rb
60
65
  - lib/declare_schema/command.rb
61
66
  - lib/declare_schema/dsl.rb
@@ -96,6 +101,12 @@ files:
96
101
  - lib/generators/declare_schema/support/eval_template.rb
97
102
  - lib/generators/declare_schema/support/model.rb
98
103
  - lib/generators/declare_schema/support/thor_shell.rb
104
+ - spec/fixtures/migrations/mysql2/will_generate_unique_constraint_names_rails_6.txt
105
+ - spec/fixtures/migrations/mysql2/will_generate_unique_constraint_names_rails_7.txt
106
+ - spec/fixtures/migrations/postgresql/will_generate_unique_constraint_names_rails_6.txt
107
+ - spec/fixtures/migrations/postgresql/will_generate_unique_constraint_names_rails_7.txt
108
+ - spec/fixtures/migrations/sqlite3/will_generate_unique_constraint_names_rails_6.txt
109
+ - spec/fixtures/migrations/sqlite3/will_generate_unique_constraint_names_rails_7.txt
99
110
  - spec/lib/declare_schema/api_spec.rb
100
111
  - spec/lib/declare_schema/field_declaration_dsl_spec.rb
101
112
  - spec/lib/declare_schema/field_spec_spec.rb
@@ -107,7 +118,6 @@ files:
107
118
  - spec/lib/declare_schema/model/habtm_model_shim_spec.rb
108
119
  - spec/lib/declare_schema/model/index_definition_spec.rb
109
120
  - spec/lib/declare_schema/model/table_options_definition_spec.rb
110
- - spec/lib/declare_schema/prepare_testapp.rb
111
121
  - spec/lib/declare_schema/schema_change/base_spec.rb
112
122
  - spec/lib/declare_schema/schema_change/column_add_spec.rb
113
123
  - spec/lib/declare_schema/schema_change/column_change_spec.rb
@@ -126,6 +136,9 @@ files:
126
136
  - spec/lib/generators/declare_schema/migration/migrator_spec.rb
127
137
  - spec/spec_helper.rb
128
138
  - spec/support/acceptance_spec_helpers.rb
139
+ - spec/support/adapter_specific_test_helpers.rb
140
+ - spec/support/prepare_testapp.rb
141
+ - spec/support/test_app_spec_helpers.rb
129
142
  homepage: https://github.com/Invoca/declare_schema
130
143
  licenses: []
131
144
  metadata:
@@ -1,23 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal"
6
- gem "climate_control", "~> 0.2"
7
- gem "mail"
8
- gem "net-smtp"
9
- gem "pry"
10
- gem "pry-byebug"
11
- gem "rails", "~> 6.1.0"
12
- gem "responders"
13
- gem "rspec"
14
- gem "rubocop"
15
- gem "yard"
16
- gem "mysql2", "~> 0.5"
17
-
18
- group :testapp do
19
- gem "bootsnap", ">= 1.1.0", require: false
20
- gem "listen"
21
- end
22
-
23
- gemspec path: "../"
@@ -1,23 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal"
6
- gem "climate_control", "~> 0.2"
7
- gem "mail"
8
- gem "net-smtp"
9
- gem "pry"
10
- gem "pry-byebug"
11
- gem "rails", "~> 7.1.0"
12
- gem "responders"
13
- gem "rspec"
14
- gem "rubocop"
15
- gem "yard"
16
- gem "mysql2", "~> 0.5"
17
-
18
- group :testapp do
19
- gem "bootsnap", ">= 1.1.0", require: false
20
- gem "listen"
21
- end
22
-
23
- gemspec path: "../"