ignored_columns_tasks 0.0.1 → 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: ad7e03cc537a362226785d3937b5e7642eb97720cfa6353272e2b691738bc9f4
4
- data.tar.gz: 2c3e07d772548bc75f0051c23ca0290ec3ead2c37a55999ad1a67f610d92fa3c
3
+ metadata.gz: 17d755fcd6106bbb60881de1e5f4099fca52a81af2fe4bb91506f9d4d17e17a0
4
+ data.tar.gz: b7c234d546bed73d91286f6d6e75e974f79f224f979e7aa15320f9875a6147ae
5
5
  SHA512:
6
- metadata.gz: 06756504d577020eb1611ab1f361418ca5d90cca980a592b6c7a8f4fa9fdcecd803c91164925b9699e7c3254c5146829b39540d2d515e8bead5738d0f99ebd06
7
- data.tar.gz: 39099157082e6e3f5aafc4e7768c4d126197b4e6bab7d5f4be87281dccd285c22e5f92525652d84a33d900ee84dee45b3cba16c5b53f116cfb124b47d37b4704
6
+ metadata.gz: efb6c72515f5bd6a97db79eb19fb3965b2e76d753e434c3a83bbba1c735b77d554e14602c6eaa82e942195ca825bccfb55a2fb61479a2f22114d8e48ec777ae1
7
+ data.tar.gz: 50ab666a8657cf2f72dc11032b37798dbd7d62c688b1f3311a6bc509b12a5d15b79ac9bd8e703a5803f3215b76bdf5d88c02040e6b15b78cfbb424d5738b7834
data/Changes ADDED
@@ -0,0 +1,7 @@
1
+ 2023-07-30 v0.1.1
2
+ --------------------
3
+ - If Strong Migrations are installed generate migration with safety_assured block
4
+
5
+ 2023-07-29 v0.1.0
6
+ --------------------
7
+ - Change IGNORED_COLUMNS_SKIP_COLUMNS env var to IGNORED_COLUMNS_TASKS_SKIP_COLUMNS
data/README.md CHANGED
@@ -32,18 +32,23 @@ If you have ignored columns that must not be dropped add them to the `SKIP_COLUM
32
32
  ```
33
33
 
34
34
  You can set this once for your project instead of specifying it every time.
35
- In this case it is recommended to use the `IGNORED_COLUMNS_SKIP_COLUMNS` environment variable.
35
+ In this case it is recommended to use the `IGNORED_COLUMNS_TASKS_SKIP_COLUMNS` environment variable:
36
36
 
37
37
  ```sh
38
- export IGNORED_COLUMNS_SKIP_COLUMNS="some_column,another_column"
38
+ export IGNORED_COLUMNS_TASKS_SKIP_COLUMNS="some_column,another_column"
39
39
  ```
40
40
 
41
- This task can also be limited to a single model via the `MODEL` environment variable:
41
+ This task can also be limited to a single model by setting the `MODEL` environment variable:
42
42
 
43
43
  ```
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:
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
 
15
15
  spec.metadata["homepage_uri"] = spec.homepage
16
16
  spec.metadata["source_code_uri"] = "https://github.com/sshaw/ignored_columns_tasks"
17
- # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
17
+ spec.metadata["changelog_uri"] = "https://github.com/sshaw/ignored_columns_tasks/blob/master/Changes"
18
18
 
19
19
  # Specify which files should be added to the gem when it is released.
20
20
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -9,9 +9,9 @@ namespace :ignored_columns do
9
9
  def skip_columns
10
10
  skip = nil
11
11
 
12
- # IGNORED_COLUMNS_SKIP_COLUMNS is our global, namespaced verison
12
+ # IGNORED_COLUMNS_TASKS_SKIP_COLUMNS is our global, namespaced version
13
13
  # SKIP_COLUMNS is shorter, command-line argument
14
- %w[IGNORED_COLUMNS_SKIP_COLUMNS SKIP_COLUMNS].each do |name|
14
+ %w[IGNORED_COLUMNS_TASKS_SKIP_COLUMNS SKIP_COLUMNS].each do |name|
15
15
  if ENV[name]
16
16
  skip ||= []
17
17
  skip.concat(ENV[name].split(/\s*,\s/))
@@ -1,3 +1,3 @@
1
1
  module IgnoredColumnsTasks
2
- VERSION = "0.0.1"
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.0.1
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-29 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
@@ -47,6 +47,7 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - ".gitignore"
50
+ - Changes
50
51
  - Gemfile
51
52
  - LICENSE.txt
52
53
  - README.md
@@ -64,6 +65,7 @@ licenses:
64
65
  metadata:
65
66
  homepage_uri: https://github.com/sshaw/ignored_columns_tasks
66
67
  source_code_uri: https://github.com/sshaw/ignored_columns_tasks
68
+ changelog_uri: https://github.com/sshaw/ignored_columns_tasks/blob/master/Changes
67
69
  post_install_message:
68
70
  rdoc_options: []
69
71
  require_paths: