Skip to content

Commit 7a0bf93

Browse files
authored
Merge pull request rails#52451 from afn/reversible-create-schema
Make create_schema / drop_schema reversible in migrations
2 parents a0a894c + e800fc6 commit 7a0bf93

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

activerecord/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
* Make `create_schema` / `drop_schema` reversible in migrations.
2+
3+
Previously, `create_schema` and `drop_schema` were irreversible migration operations.
4+
5+
*Tony Novak*
6+
17
* Support batching using custom columns.
28

39
```ruby

activerecord/lib/active_record/migration/command_recorder.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class CommandRecorder
5555
:add_exclusion_constraint, :remove_exclusion_constraint,
5656
:add_unique_constraint, :remove_unique_constraint,
5757
:create_enum, :drop_enum, :rename_enum, :add_enum_value, :rename_enum_value,
58+
:create_schema, :drop_schema,
5859
]
5960
include JoinTable
6061

@@ -163,7 +164,8 @@ module StraightReversions # :nodoc:
163164
add_exclusion_constraint: :remove_exclusion_constraint,
164165
add_unique_constraint: :remove_unique_constraint,
165166
enable_extension: :disable_extension,
166-
create_enum: :drop_enum
167+
create_enum: :drop_enum,
168+
create_schema: :drop_schema,
167169
}.each do |cmd, inv|
168170
[[inv, cmd], [cmd, inv]].uniq.each do |method, inverse|
169171
class_eval <<-EOV, __FILE__, __LINE__ + 1

activerecord/test/cases/migration/command_recorder_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,16 @@ def test_invert_disable_extension
376376
assert_equal [:enable_extension, ["uuid-ossp"], nil], enable
377377
end
378378

379+
def test_invert_create_schema
380+
disable = @recorder.inverse_of :create_schema, ["myschema"]
381+
assert_equal [:drop_schema, ["myschema"], nil], disable
382+
end
383+
384+
def test_invert_drop_schema
385+
enable = @recorder.inverse_of :drop_schema, ["myschema"]
386+
assert_equal [:create_schema, ["myschema"], nil], enable
387+
end
388+
379389
def test_invert_add_foreign_key
380390
enable = @recorder.inverse_of :add_foreign_key, [:dogs, :people]
381391
assert_equal [:remove_foreign_key, [:dogs, :people], nil], enable

0 commit comments

Comments
 (0)