Class: Pu::Res::ScaffoldGenerator

Inherits:
PlutoniumGenerators::ModelGeneratorBase show all
Includes:
PlutoniumGenerators::Generator
Defined in:
lib/generators/pu/res/scaffold/scaffold_generator.rb

Overview

run ‘rails g pu:res:scaffold existing_resource` without any arguments to import an existing resource

Instance Method Summary collapse

Methods included from PlutoniumGenerators::Generator

included

Methods included from PlutoniumGenerators::Concerns::Logger

#debug, #error, #exception, #info, #success, #warn

Methods included from PlutoniumGenerators::Concerns::Config

#read_config, #write_config

Instance Method Details

#create_controllerObject



37
38
39
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 37

def create_controller
  template "controller.rb", File.join("app/controllers", class_path, "#{file_name.pluralize}_controller.rb")
end

#create_definitionObject



45
46
47
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 45

def create_definition
  template "definition.rb", File.join("app/definitions", class_path, "#{file_name}_definition.rb")
end

#create_modelObject



31
32
33
34
35
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 31

def create_model
  return unless options[:model]

  invoke "pu:res:model", [@original_name, *@original_attributes], dest: selected_destination_feature, **options
end

#create_policyObject



41
42
43
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 41

def create_policy
  template "policy.rb", File.join("app/policies", class_path, "#{file_name}_policy.rb")
end

#setupObject



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 17

def setup
  return unless options[:model]

  model_class = class_name.safe_constantize
  if model_class.present?
    if attributes.empty?
      attributes_str = model_class.content_columns.map { |col| "#{col.name}:#{col.type}" }
      self.attributes = parse_attributes_internal!(attributes_str)
    else
      warn("Overwriting existing resource. You can leave out the attributes to import an existing resource.")
    end
  end
end