codeforamerica/michigan-benefits

View on GitHub
lib/tasks/alphabetize_columns.rake

Summary

Maintainability
Test Coverage
# From https://github.com/ankane/strong_migrations/blob/c870b1a8b942a0b616f09d4758d109e03a79c806/lib/tasks/strong_migrations.rake

namespace :strong_migrations do
  task safety_assured: :environment do
    raise "Set SAFETY_ASSURED=1 to run this task in production" if Rails.env.production? && !ENV["SAFETY_ASSURED"]
  end

  # https://www.pgrs.net/2008/03/13/alphabetize-schema-rb-columns/
  task :alphabetize_columns do
    warn "Dumping schema"
    ActiveRecord::Base.logger.level = Logger::INFO

    class << ActiveRecord::Base.connection
      alias_method :old_columns, :columns unless instance_methods.include?("old_columns")
      alias_method :old_extensions, :extensions unless instance_methods.include?("old_extensions")

      def columns(*args)
        old_columns(*args).sort_by(&:name)
      end

      def extensions(*args)
        old_extensions(*args).sort
      end
    end
  end
end