Class: RailsForge::Generators::ApiGenerator

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

Overview

ApiGenerator creates API resources

Defined Under Namespace

Classes: InvalidResourceNameError

Constant Summary

Constants inherited from BaseGenerator

BaseGenerator::TEMPLATE_VERSION

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseGenerator

#camelize, #find_rails_app_path, #underscore

Constructor Details

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

Initialize the generator

Parameters:

  • name (String)

    Resource name

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

    Generator options



16
17
18
19
20
21
# File 'lib/railsforge/generators/api_generator.rb', line 16

def initialize(name, options = {})
  super(name, options)
  @namespace = options[:namespace] || "api"
  @version = options[:version] || "v1"
  @with_spec = options.fetch(:with_spec, true)
end

Class Method Details

.generate(resource_name, with_spec: true, version: "v1", namespace: "api") ⇒ Object

Class method for CLI



42
43
44
# File 'lib/railsforge/generators/api_generator.rb', line 42

def self.generate(resource_name, with_spec: true, version: "v1", namespace: "api")
  new(resource_name, with_spec: with_spec, version: version, namespace: namespace).generate
end

Instance Method Details

#generateString

Generate API resource files

Returns:

  • (String)

    Success message



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

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

  validate_name!(@name)

  results = []
  results << generate_controller
  results << generate_serializer
  results << generate_policy
  results << generate_service
  results << generate_query
  results << generate_request_spec if @with_spec

  "API resource '#{@name}' generated successfully with #{results.count} files!\n" + results.join("\n")
end