Class: Eucalypt::Generators::Controller

Inherits:
Thor::Group
  • Object
show all
Includes:
Helpers, Thor::Actions
Defined in:
lib/eucalypt/generate/namespaces/generate-controller/generators/controller.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



13
14
15
# File 'lib/eucalypt/generate/namespaces/generate-controller/generators/controller.rb', line 13

def self.source_root
  File.join File.dirname(__dir__), 'templates'
end

Instance Method Details

#generate(spec: true, rest: false, name:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/eucalypt/generate/namespaces/generate-controller/generators/controller.rb', line 17

def generate(spec: true, rest: false, name:)
  controller = Inflect.new(:controller, name)

  route = '/' << (rest ? controller.route_name.pluralize : controller.route_name)

  controller_file_name = String.build do |s|
    s << 'rest_' if rest
    s << 'controller.tt'
  end
  controller_template = File.join 'controller', controller_file_name

  helper = Inflect.new(:helper, controller.resource)

  config = {
    route: route,
    constant: controller.constant,
    class_name: controller.class_name,
    helper_class_name: helper.class_name,
    resource: controller.resource,
    resources: controller.resources
  }

  template(controller_template, controller.file_path, config)
  template("controller_spec.tt", controller.spec_path, config) if spec
end