Sha256: 786767b0e774d28bc932ec05ad44eccc2ee8ef3b3079ad2f6b6942a9f1da5773

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "rails/generators"

module Gutentag
  module Generators
    class MigrationVersionsGenerator < Rails::Generators::Base
      desc "Update the ActiveRecord version in Gutentag migrations"

      def update_migration_versions
        if ::ActiveRecord::VERSION::MAJOR < 5
          puts "No changes required"
        else
          migration_files.each do |file|
            gsub_file file,
              /< ActiveRecord::Migration$/,
              "< ActiveRecord::Migration[#{rails_version}]"
          end
        end
      end

      private

      def migration_files
        Dir[Rails.root.join("db/migrate/*.rb")].select do |path|
          known_migration_names.any? do |known|
            File.basename(path)[/\A\d+_#{known}\.gutentag.rb\z/]
          end
        end
      end

      def known_migration_names
        @known_migration_names ||= begin
          Dir[File.join(__dir__, "../../../db/migrate/*.rb")].collect do |path|
            File.basename(path).gsub(/\A\d+_/, "").gsub(/\.rb\z/, "")
          end
        end
      end

      def rails_version
        @rails_version ||= [
          ::ActiveRecord::VERSION::MAJOR,
          ::ActiveRecord::VERSION::MINOR
        ].join(".")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gutentag-2.6.0 lib/gutentag/generators/migration_versions_generator.rb