Class: RailsForge::Generators::QueryGenerator

Inherits:
BaseGenerator show all
Defined in:
lib/railsforge/generators/query_generator.rb

Overview

QueryGenerator creates query files

Defined Under Namespace

Classes: InvalidQueryNameError

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 = {}) ⇒ QueryGenerator

Initialize the generator

Parameters:

  • name (String)

    Query name

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

    Generator options



19
20
21
22
23
# File 'lib/railsforge/generators/query_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(query_name, with_spec: true, template_version: "v1") ⇒ Object

Class method for CLI



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

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

Instance Method Details

#generateString

Generate query files

Returns:

  • (String)

    Success message



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

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

  validate_name!(@name)

  results = []
  results << generate_query

  if @with_spec
    results << generate_spec
  end

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