ignored_columns_tasks 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/Changes +4 -0
- data/README.md +5 -0
- data/lib/ignored_columns_tasks/version.rb +1 -1
- data/lib/ignored_columns_tasks.rb +25 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 17d755fcd6106bbb60881de1e5f4099fca52a81af2fe4bb91506f9d4d17e17a0
         | 
| 4 | 
            +
              data.tar.gz: b7c234d546bed73d91286f6d6e75e974f79f224f979e7aa15320f9875a6147ae
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: efb6c72515f5bd6a97db79eb19fb3965b2e76d753e434c3a83bbba1c735b77d554e14602c6eaa82e942195ca825bccfb55a2fb61479a2f22114d8e48ec777ae1
         | 
| 7 | 
            +
              data.tar.gz: 50ab666a8657cf2f72dc11032b37798dbd7d62c688b1f3311a6bc509b12a5d15b79ac9bd8e703a5803f3215b76bdf5d88c02040e6b15b78cfbb424d5738b7834
         | 
    
        data/Changes
    CHANGED
    
    
    
        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:
         | 
| @@ -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 | 
            -
                     | 
| 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", [ | 
| 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. | 
| 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- | 
| 11 | 
            +
            date: 2023-07-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |