safer_migrations 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ad6bd8008a2d391b97b18ec2c14b12a51a35c875c34b0cfa2f61ec079ed89b9
4
- data.tar.gz: c5892a3dfd9646c4c1d8b38a7538189f056b1deb771d6302220efde903eec311
3
+ metadata.gz: 4c294834ff3b4b77adb2e284fe48078e3b7482559539b1fa6974f2dc0a13ec8d
4
+ data.tar.gz: 3773b0eb7ccf1ed43514caabb462caf12ac7383641e796c305a92f100e803860
5
5
  SHA512:
6
- metadata.gz: 6b7d30166b71ad5a053f5fdcef23ee166004e5867867cd841fbf133cf517666c27e3289203e5936cc4f17f3bdbfbdc0ca74c7110809b2d380cb2658a1c952b9b
7
- data.tar.gz: 12e0ba7df956e5678ffa13bc4cbc8851f0265017e3c2498da953d60bff02f55f1384f4272fda52b4cc298da28650f1256d275a8cf3928ecf41acc05aeb6e1c02
6
+ metadata.gz: 6fa2ec4033335b64091a95defeabe042ffd6ee86cdfbe8c0517516b199211b059fd410377448001571392231d1163e16cf9655ff6c0aed5da69c38047c0522c8
7
+ data.tar.gz: c9253a672f540ecec3fc46d74ac4f4862bce92d42324e772b652a8833d5972c7d1d9b179d9923cad086a6c3c87dbf3709d848a4b0a6fbf3f86bf6f455626cb3a
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # SaferMigrations
2
2
 
3
3
  `SaferMigrations` provides safer methods for Active Record Migrations.
4
+
4
5
  ## Installation
5
6
 
6
7
  Install the gem and add to the application's Gemfile by executing:
@@ -13,7 +14,18 @@ If bundler is not being used to manage dependencies, install the gem by executin
13
14
 
14
15
  ## Usage
15
16
 
16
- TODO: Write usage instructions here
17
+ This gem provides the following methods for Active Record Migrations.
18
+
19
+ * `safer_remove_column`
20
+ * `safer_remove_columns`
21
+ * `safer_rename_column`
22
+ * `t.safer_remove`
23
+ * `t.safer_rename`
24
+
25
+ These methods check whether a column that will be removed is still used in a model. If a model uses it, these methods raise an error. In that case, you should specify a column to `ignored_columns` first.
26
+
27
+ Except for checking it, the behavior is same as well as the Rail's default methods.
28
+
17
29
 
18
30
  ## Development
19
31
 
@@ -17,5 +17,13 @@ module SaferMigrations
17
17
  def invert_safer_remove_columns(args)
18
18
  invert_remove_columns(args)
19
19
  end
20
+
21
+ ruby2_keywords def safer_rename_column(*args, &block)
22
+ record(:safer_rename_column, args, &block)
23
+ end
24
+
25
+ def invert_safer_rename_column(args)
26
+ invert_rename_column(args)
27
+ end
20
28
  end
21
29
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SaferMigrations
4
+ module TableDefinition
5
+ def safer_remove(*column_names, **options)
6
+ @base.safer_remove_columns(name, *column_names, **options)
7
+ end
8
+
9
+ def safer_rename(column_name, new_column_name)
10
+ @base.safer_rename_column(name, column_name, new_column_name)
11
+ end
12
+ end
13
+ end
@@ -2,16 +2,45 @@
2
2
 
3
3
  module SaferMigrations
4
4
  module SchemaStatements
5
- def safer_remove_column(table_name, column_name, type = nil, **options)
6
- validate_remove_column(table_name, column_name)
7
- remove_column(table_name, column_name, type = nil, **options)
8
- end
5
+ if SaferMigrations.enforce_safer_methods
6
+ def remove_column(table_name, column_name, type = nil, **options)
7
+ validate_remove_column(table_name, column_name)
8
+ super
9
+ end
10
+
11
+ def remove_columns(table_name, *column_names, type: nil, **options)
12
+ column_names.each do |column_name|
13
+ validate_remove_column(table_name, column_name)
14
+ end
15
+ super
16
+ end
17
+
18
+ def rename_column(table_name, column_name, new_column_name)
19
+ validate_remove_column(table_name, column_name)
20
+ super
21
+ end
22
+
23
+ alias_method :safer_remove_column, :remove_column
24
+ alias_method :safer_remove_columns, :remove_columns
25
+ alias_method :safer_rename_column, :rename_column
26
+ else
27
+ def safer_remove_column(table_name, column_name, type = nil, **options)
28
+ validate_remove_column(table_name, column_name)
29
+ remove_column(table_name, column_name, type, **options)
30
+ end
31
+
32
+ def safer_remove_columns(table_name, *column_names, type: nil, **options)
33
+ column_names.each do |column_name|
34
+ validate_remove_column(table_name, column_name)
35
+ end
36
+
37
+ remove_columns(table_name, *column_names, type: type, **options)
38
+ end
9
39
 
10
- def safer_remove_columns(table_name, *column_names, type: nil, **options)
11
- column_names.each do |column_name|
40
+ def safer_rename_column(table_name, column_name, new_column_name)
12
41
  validate_remove_column(table_name, column_name)
42
+ rename_column(table_name, column_name, new_column_name)
13
43
  end
14
- remove_columns(table_name, *column_names, type = nil, **options)
15
44
  end
16
45
 
17
46
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SaferMigrations
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -3,12 +3,39 @@
3
3
  require "active_support"
4
4
  require "active_record"
5
5
 
6
+ module SaferMigrations
7
+ class << self
8
+ attr_accessor :enforce_safer_methods
9
+ end
10
+ end
11
+
6
12
  require_relative "safer_migrations/version"
7
13
  require_relative "safer_migrations/errors"
8
- require_relative "safer_migrations/command_recorder"
9
- require_relative "safer_migrations/schema_statements"
10
14
 
11
15
  ActiveSupport.on_load(:active_record) do
12
- ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(SaferMigrations::SchemaStatements)
16
+ require_relative "safer_migrations/command_recorder"
17
+ require_relative "safer_migrations/schema_definitions"
18
+
19
+ ActiveRecord::ConnectionAdapters::Table.prepend(SaferMigrations::TableDefinition)
13
20
  ActiveRecord::Migration::CommandRecorder.prepend(SaferMigrations::CommandRecorder)
14
21
  end
22
+
23
+ ActiveSupport.on_load(:active_record_sqlite3adapter) do
24
+ require_relative "safer_migrations/schema_statements"
25
+ self.prepend(SaferMigrations::SchemaStatements)
26
+ end
27
+
28
+ ActiveSupport.on_load(:active_record_mysql2adapter) do
29
+ require_relative "safer_migrations/schema_statements"
30
+ self.prepend(SaferMigrations::SchemaStatements)
31
+ end
32
+
33
+ ActiveSupport.on_load(:active_record_trilogyadapter) do
34
+ require_relative "safer_migrations/schema_statements"
35
+ self.prepend(SaferMigrations::SchemaStatements)
36
+ end
37
+
38
+ ActiveSupport.on_load(:active_record_postgresqladapter) do
39
+ require_relative "safer_migrations/schema_statements"
40
+ self.prepend(SaferMigrations::SchemaStatements)
41
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safer_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji yaginuma
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-30 00:00:00.000000000 Z
11
+ date: 2024-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -51,13 +51,14 @@ files:
51
51
  - lib/safer_migrations.rb
52
52
  - lib/safer_migrations/command_recorder.rb
53
53
  - lib/safer_migrations/errors.rb
54
+ - lib/safer_migrations/schema_definitions.rb
54
55
  - lib/safer_migrations/schema_statements.rb
55
56
  - lib/safer_migrations/version.rb
56
- homepage: https://github.com/y-yagi
57
+ homepage: https://github.com/y-yagi/safer_migrations
57
58
  licenses:
58
59
  - MIT
59
60
  metadata:
60
- homepage_uri: https://github.com/y-yagi
61
+ homepage_uri: https://github.com/y-yagi/safer_migrations
61
62
  post_install_message:
62
63
  rdoc_options: []
63
64
  require_paths: