class Disco::Generators::CommandGenerator

Public Instance Methods

create_command_file() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 18
def create_command_file
  template 'command.rb.erb', File.join('app/commands', class_path, "#{file_name}_command.rb")
end

Protected Instance Methods

event_attributes_names() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 73
def event_attributes_names
  @event_attribute_names ||= if unique_id?
                               attributes_names.dup.unshift 'id'
                             else
                               attributes_names
                             end
end
model_name() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 65
def model_name
  options[:model_name]
end
persisted?() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 69
def persisted?
  options[:persisted]
end
skip_model?() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 61
def skip_model?
  options[:skip_model]
end
unique_id?() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 57
def unique_id?
  options[:unique_id]
end

Private Instance Methods

add_to_command_processor() click to toggle source
# File lib/generators/disco/command/command_generator.rb, line 36
      def add_to_command_processor
        return if skip_processor? || (behavior == :revoke)
        extra, merge = '', ''
        if unique_id?
          extra = "\n        id = ActiveDomain::UniqueCommandIdRepository.new_for command.class.name"
          merge = '.merge(id: id)'
        end
        content = <<-EOF

    process #{class_name}Command do |command|
      if command.valid?#{extra}
        event #{event_class_name}Event.new command.to_hash#{merge}
      end
    end
        EOF
        file = File.join('domain/command_processors', processor_domain_class_path, "#{processor_file_name}_processor.rb")
        inject_into_file file, content, after: /\s*include\s+ActiveDomain::CommandProcessor/
      end