Class: RailsForge::Generators::PresenterGenerator

Inherits:
BaseGenerator
  • Object
show all
Defined in:
lib/railsforge/generators/presenter_generator.rb

Overview

PresenterGenerator creates presenter files

Defined Under Namespace

Classes: InvalidPresenterNameError

Constant Summary collapse

TEMPLATE_VERSION =

Template version

"v1"

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseGenerator

#camelize, #find_rails_app_path, #underscore

Constructor Details

#initialize(name, options = {}) ⇒ PresenterGenerator

Initialize the generator

Parameters:

  • name (String)

    Presenter name

  • options (Hash) (defaults to: {})

    Generator options



19
20
21
22
23
# File 'lib/railsforge/generators/presenter_generator.rb', line 19

def initialize(name, options = {})
  super(name, options)
  @template_version = options[:template_version] || TEMPLATE_VERSION
  @with_spec = options.fetch(:with_spec, true)
end

Class Method Details

.generate(presenter_name, with_spec: true, template_version: "v1") ⇒ Object

Class method for CLI



43
44
45
# File 'lib/railsforge/generators/presenter_generator.rb', line 43

def self.generate(presenter_name, with_spec: true, template_version: "v1")
  new(presenter_name, with_spec: with_spec, template_version: template_version).generate
end

Instance Method Details

#generateString

Generate presenter files

Returns:

  • (String)

    Success message



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/railsforge/generators/presenter_generator.rb', line 27

def generate
  return "Not in a Rails application directory" unless @base_path

  validate_name!(@name)

  results = []
  results << generate_presenter

  if @with_spec
    results << generate_spec
  end

  "Presenter '#{@name}' generated successfully!\n" + results.join("\n")
end