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

derive_association_name, find_shared_namespace, 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

#check_class_collisionObject

Skip collision check when scaffolding for existing model



18
19
20
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 18

def check_class_collision
  super if options[:model]
end

#create_controllerObject



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

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

#create_definitionObject



48
49
50
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 48

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

#create_modelObject



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

def create_model
  return unless options[:model]

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

#create_policyObject



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

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

#setupObject



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/generators/pu/res/scaffold/scaffold_generator.rb', line 22

def setup
  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)
    elsif options[:model]
      warn("Overwriting existing resource. You can leave out the attributes to import an existing resource.")
    end
  end
end