Sha256: f51bc23f46ede1ab91bfa217df4327a2e3a3d02139bb20dc3dc7eb83354067cc

Contents?: true

Size: 1.79 KB

Versions: 5

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true

module MobileWorkflow
  module Generators
    # Custom scaffolding generator
    # https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb
    class ControllerGenerator < Rails::Generators::NamedBase
      include Rails::Generators::ResourceHelpers
      source_root File.expand_path('templates', __dir__)

      class_option :attributes, type: :array, default: [], banner: 'field:type field:type'
      class_option :actions, type: :array, default: [], banner: 'index create update destroy'
      class_option :doorkeeper_oauth, type: :boolean, default: false
      class_option :s3_storage, type: :boolean, default: false

      def copy_controller_and_spec_files
        template 'controller.rb.erb',
                 File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
        template 'controller_spec.rb.erb',
                 File.join('spec/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb")
      end

      private

      def doorkeeper_oauth?
        options[:doorkeeper_oauth]
      end

      def s3_storage?
        options[:s3_storage]
      end

      def attributes_names
        options[:attributes].map { |attribute| attribute.split(':').first }
      end

      def permitted_params
        permitted_attributes = attributes_names.dup
        permitted_attributes.delete('user')
        permitted_attributes.map { |name| ":#{name}" }.join(', ')
      end

      def index_action?
        actions.include?('index')
      end

      def show_action?
        actions.include?('show')
      end

      def create_action?
        actions.include?('create')
      end

      def actions
        options[:actions]
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mobile_workflow-0.12.2 lib/generators/mobile_workflow/controller_generator.rb
mobile_workflow-0.12.1 lib/generators/mobile_workflow/controller_generator.rb
mobile_workflow-0.12.0 lib/generators/mobile_workflow/controller_generator.rb
mobile_workflow-0.11.1 lib/generators/mobile_workflow/controller_generator.rb
mobile_workflow-0.11.0 lib/generators/mobile_workflow/controller_generator.rb