Class: MatViews::Generators::InstallGenerator

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

Overview

Rails generator that installs MatViews into a host application by:

  1. Copying migrations for definitions and run-tracking tables.

  2. Creating an initializer at config/initializers/mat_views.rb.

  3. Printing a success message with next steps.

Examples:

Run the installer

bin/rails g mat_views:install

See Also:

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(path) ⇒ String

Computes the next migration number for copied migrations.

Required by Rails to generate timestamped migration filenames.

Parameters:

  • path (String)

    destination path for migrations

Returns:

  • (String)

    the next migration number (timestamp)



81
82
83
# File 'lib/generators/mat_views/install/install_generator.rb', line 81

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

Instance Method Details

#copy_migrationsvoid

This method returns an undefined value.

Copies all required migrations into the host app.



50
51
52
53
# File 'lib/generators/mat_views/install/install_generator.rb', line 50

def copy_migrations
  migration_template 'create_mat_view_definitions.rb', 'db/migrate/create_mat_view_definitions.rb'
  migration_template 'create_mat_view_runs.rb', 'db/migrate/create_mat_view_runs.rb'
end

#create_initializervoid

This method returns an undefined value.

Creates the engine initializer in the host app.



60
61
62
# File 'lib/generators/mat_views/install/install_generator.rb', line 60

def create_initializer
  copy_file 'mat_views_initializer.rb', 'config/initializers/mat_views.rb'
end

#expand_pathString

Directory containing template files for the generator.

Returns:

  • (String)

    absolute path to templates dir



39
# File 'lib/generators/mat_views/install/install_generator.rb', line 39

source_root File.expand_path('templates', __dir__)

#show_success_messagevoid

This method returns an undefined value.

Prints a success message after installation.



69
70
71
# File 'lib/generators/mat_views/install/install_generator.rb', line 69

def show_success_message
  say "\n✅ MatViews installed! Don't forget to run:  rails db:migrate\n", :green
end