Class: RailsForge::Generators::ApiGenerator
- Inherits:
-
BaseGenerator
- Object
- BaseGenerator
- RailsForge::Generators::ApiGenerator
- 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
-
.generate(resource_name, with_spec: true, version: "v1", namespace: "api") ⇒ Object
Class method for CLI.
Instance Method Summary collapse
-
#generate ⇒ String
Generate API resource files.
-
#initialize(name, options = {}) ⇒ ApiGenerator
constructor
Initialize the generator.
Methods inherited from BaseGenerator
#camelize, #find_rails_app_path, #underscore
Constructor Details
#initialize(name, options = {}) ⇒ ApiGenerator
Initialize the generator
16 17 18 19 20 21 |
# File 'lib/railsforge/generators/api_generator.rb', line 16 def initialize(name, = {}) super(name, ) @namespace = [:namespace] || "api" @version = [:version] || "v1" @with_spec = .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
#generate ⇒ String
Generate API resource files
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 |