ignored_columns_tasks 0.1.0 → 0.1.1

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: 5766d5af94e72067164ba02354d848710b42fc85aabb19b0a4805fc9a0d5fa2f
4
- data.tar.gz: c21503fa1b197220802644e8a697bec55fb454b3d059084a8c12120c4418843f
3
+ metadata.gz: 17d755fcd6106bbb60881de1e5f4099fca52a81af2fe4bb91506f9d4d17e17a0
4
+ data.tar.gz: b7c234d546bed73d91286f6d6e75e974f79f224f979e7aa15320f9875a6147ae
5
5
  SHA512:
6
- metadata.gz: 02e85c9e24669d726ba4bfb78ae04162ebe04ef9540c706ec1f710f2ba591cc050e0bf737675bbedfae763852c93d1c37ed0f76f8011c241728d76540eb9a051
7
- data.tar.gz: 6f09ed53de2d8439bba4befa933ccaa979d0492f6028980ea8682b936da004f8550e681f0d9b70c5743ded6ea829cdf8df3218db23175ebbdffd7cd1f902c5b1
6
+ metadata.gz: efb6c72515f5bd6a97db79eb19fb3965b2e76d753e434c3a83bbba1c735b77d554e14602c6eaa82e942195ca825bccfb55a2fb61479a2f22114d8e48ec777ae1
7
+ data.tar.gz: 50ab666a8657cf2f72dc11032b37798dbd7d62c688b1f3311a6bc509b12a5d15b79ac9bd8e703a5803f3215b76bdf5d88c02040e6b15b78cfbb424d5738b7834
data/Changes CHANGED
@@ -1,3 +1,7 @@
1
+ 2023-07-30 v0.1.1
2
+ --------------------
3
+ - If Strong Migrations are installed generate migration with safety_assured block
4
+
1
5
  2023-07-29 v0.1.0
2
6
  --------------------
3
7
  - Change IGNORED_COLUMNS_SKIP_COLUMNS env var to IGNORED_COLUMNS_TASKS_SKIP_COLUMNS
data/README.md CHANGED
@@ -44,6 +44,11 @@ This task can also be limited to a single model by setting the `MODEL` environme
44
44
  ./bin/rails ignored_columns:migration MODEL=User
45
45
  ```
46
46
 
47
+ #### Strong Migrations
48
+
49
+ If your project uses [Strong Migrations](https://github.com/ankane/strong_migrations) the `remove_column` call
50
+ will be wrapped in a `safety_assured` block.
51
+
47
52
  ### Ignored Columns That Have Been Dropped From Your Database
48
53
 
49
54
  This will print ignored columns that no longer exist the database:
@@ -1,3 +1,3 @@
1
1
  module IgnoredColumnsTasks
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -72,12 +72,15 @@ module IgnoredColumnsTasks
72
72
  return
73
73
  end
74
74
 
75
+ migrations = []
75
76
  to_drop.group_by(&:klass).each do |klass, columns|
76
- migration = "remove_ignored_columns_from_#{klass.table_name}"
77
+ migrations << "remove_ignored_columns_from_#{klass.table_name}"
77
78
 
78
79
  # Assume Rails does the shell quoting on Column#name?
79
- Rails::Generators.invoke("active_record:migration", [migration, columns.map(&:name)])
80
+ Rails::Generators.invoke("active_record:migration", [migrations[-1], columns.map(&:name)])
80
81
  end
82
+
83
+ apply_strong_migrations(migrations) if defined?(StrongMigrations)
81
84
  end
82
85
 
83
86
  private
@@ -114,6 +117,26 @@ module IgnoredColumnsTasks
114
117
  ignored.map { |column| Column.new(class_with_all, column, class_with_all.columns_hash[column]) }
115
118
  end
116
119
  end
120
+
121
+ def apply_strong_migrations(migrations)
122
+ migrations.each do |migration|
123
+ # Better way to do this? There should only be 1 since db:migrate will fail if suffix exists.
124
+ path = Dir[ Rails.root.join("db/migrate") / "*_#{migration}.rb" ][0]
125
+ # If we can't find it could be due to migration generator failing. How to tell? $? and return value not reliable
126
+ next unless path
127
+
128
+ add_safety_assured(path)
129
+ end
130
+ end
131
+
132
+ def add_safety_assured(path)
133
+ migration = File.read(path)
134
+ return if migration =~ /\wsafety_assured\s/
135
+
136
+ migration.gsub!(/^(\s*)(remove_column.+)(\s*)$/) { "#$1safety_assured { #$2 }#$3" }
137
+
138
+ File.write(path, migration)
139
+ end
117
140
  end
118
141
  end
119
142
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ignored_columns_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skye Shaw
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-30 00:00:00.000000000 Z
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler