Sha256: bfe75e6acda7b8d3fdb2f92a8891c03a79b548ef4d958ccff484ea2e34f87878

Contents?: true

Size: 1.74 KB

Versions: 8

Compression:

Stored size: 1.74 KB

Contents

require "rails/generators"
require "rails/generators/active_record"

module PaperTrail
  # Installs PaperTrail in a rails app.
  class InstallGenerator < ::Rails::Generators::Base
    include ::Rails::Generators::Migration

    source_root File.expand_path("../templates", __FILE__)
    class_option(
      :with_changes,
      type: :boolean,
      default: false,
      desc: "Store changeset (diff) with each version"
    )
    class_option(
      :with_associations,
      type: :boolean,
      default: false,
      desc: "Store transactional IDs to support association restoration"
    )

    desc "Generates (but does not run) a migration to add a versions table." \
         "  Also generates an initializer file for configuring PaperTrail"

    def create_migration_file
      add_paper_trail_migration("create_versions")
      add_paper_trail_migration("add_object_changes_to_versions") if options.with_changes?
      if options.with_associations?
        add_paper_trail_migration("create_version_associations")
        add_paper_trail_migration("add_transaction_id_column_to_versions")
      end
    end

    def create_initializer
      create_file(
        "config/initializers/paper_trail.rb",
        "PaperTrail.config.track_associations = #{!!options.with_associations?}"
      )
    end

    def self.next_migration_number(dirname)
      ::ActiveRecord::Generators::Base.next_migration_number(dirname)
    end

    protected

    def add_paper_trail_migration(template)
      migration_dir = File.expand_path("db/migrate")
      if self.class.migration_exists?(migration_dir, template)
        ::Kernel.warn "Migration already exists: #{template}"
      else
        migration_template "#{template}.rb", "db/migrate/#{template}.rb"
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/paper_trail-5.2.3/lib/generators/paper_trail/install_generator.rb
paper_trail-7.0.0 lib/generators/paper_trail/install_generator.rb
paper_trail-6.0.2 lib/generators/paper_trail/install_generator.rb
paper_trail-6.0.1 lib/generators/paper_trail/install_generator.rb
paper_trail-6.0.0 lib/generators/paper_trail/install_generator.rb
paper_trail-5.2.3 lib/generators/paper_trail/install_generator.rb
paper_trail-5.2.2 lib/generators/paper_trail/install_generator.rb
paper_trail-5.2.1 lib/generators/paper_trail/install_generator.rb