Sha256: 1bb9ae0d6d1104d92dfabb3d2ce76e7e8568ff3d5a3561d63349a9cfefb7fbd7

Contents?: true

Size: 1.81 KB

Versions: 28

Compression:

Stored size: 1.81 KB

Contents

require 'rails/generators'
require 'rails/generators/migration'
require 'active_record'
require 'rails/generators/active_record'

module Audited
  module Generators
    class UpgradeGenerator < Rails::Generators::Base
      include Rails::Generators::Migration

      source_root File.expand_path("../templates", __FILE__)

      # Implement the required interface for Rails::Generators::Migration.
      def self.next_migration_number(dirname) #:nodoc:
        next_migration_number = current_migration_number(dirname) + 1
        if ActiveRecord::Base.timestamped_migrations
          [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
        else
          "%.3d" % next_migration_number
        end
      end

      def copy_templates
        migrations_to_be_applied do |m|
          migration_template "#{m}.rb", "db/migrate/#{m}.rb"
        end
      end

      private

      def migrations_to_be_applied
        Audited::Adapters::ActiveRecord::Audit.reset_column_information
        columns = Audited::Adapters::ActiveRecord::Audit.columns.map(&:name)

        unless columns.include?( 'comment' )
          yield :add_comment_to_audits
        end

        if columns.include?( 'changes' )
          yield :rename_changes_to_audited_changes
        end

        unless columns.include?( 'remote_address' )
          yield :add_remote_address_to_audits
        end

        unless columns.include?( 'association_id' )
          if columns.include?('auditable_parent_id')
            yield :rename_parent_to_association
          else
            unless columns.include?( 'associated_id' )
              yield :add_association_to_audits
            end
          end
        end

        if columns.include?( 'association_id' )
          yield :rename_association_to_associated
        end
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 4 rubygems

Version Path
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/audited-activerecord-3.0.0/lib/generators/audited/upgrade_generator.rb
audited-activerecord-3.0.0 lib/generators/audited/upgrade_generator.rb
audited-activerecord-3.0.0.rc2 lib/generators/audited/upgrade_generator.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/audited-activerecord-3.0.0.rc1/lib/generators/audited/upgrade_generator.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/audited-activerecord-3.0.0.rc1/lib/generators/audited/upgrade_generator.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/audited-activerecord-3.0.0.rc1/lib/generators/audited/upgrade_generator.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/audited-activerecord-3.0.0.rc1/lib/generators/audited/upgrade_generator.rb
audited-activerecord-3.0.0.rc1 lib/generators/audited/upgrade_generator.rb