Class: StandardAudit::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/standard_audit/install/install_generator.rb

Overview

Installs StandardAudit in a host Rails application.

Creates the migration for the ‘audit_logs` table and writes the initializer at `config/initializers/standard_audit.rb`.

Idempotent: re-running the generator will skip pieces it has already installed. Pass ‘–skip-*` flags to opt out of individual steps and `–force` to overwrite an existing initializer.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object



35
36
37
# File 'lib/generators/standard_audit/install/install_generator.rb', line 35

def self.next_migration_number(dirname)
  Time.now.utc.strftime("%Y%m%d%H%M%S")
end

Instance Method Details

#copy_initializerObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/generators/standard_audit/install/install_generator.rb', line 57

def copy_initializer
  initializer_path = "config/initializers/standard_audit.rb"

  if options[:skip_initializer]
    say_status("skip", "#{initializer_path} (--skip-initializer)", :yellow)
    return
  end

  if File.exist?(File.join(destination_root, initializer_path)) && !options[:force]
    say_status("identical", "#{initializer_path} (already exists; pass --force to overwrite)", :blue)
    return
  end

  template "initializer.rb.erb", initializer_path, force: options[:force]
end

#copy_migrationObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/generators/standard_audit/install/install_generator.rb', line 39

def copy_migration
  if options[:skip_migration]
    say_status("skip", "db/migrate/*_create_audit_logs.rb (--skip-migration)", :yellow)
    return
  end

  if existing_migration
    say_status(
      "identical",
      "AuditLog migration already present (#{relative_migration_path(existing_migration)}), skipping",
      :blue
    )
    return
  end

  migration_template "create_audit_logs.rb.erb", "db/migrate/create_audit_logs.rb"
end