class DomainGenerator

Reduce DDD boilerplate

Public Instance Methods

generate() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 15
def generate
  raise ArgumentError.new('Missing domain name') if name.blank?

  generate_app_service if option_enabled?(:app_service)
  generate_service if option_enabled?(:service)
  generate_model if option_enabled?(:model)
  generate_repository if generate_repo?
end

Private Instance Methods

generate_app_service() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 26
def generate_app_service
  template 'app_service.template', "app/domain/#{name.underscore}/app_services/#{options.app_service.underscore}.rb"
  template 'app_service_spec.template', "spec/domain/#{name.underscore}/app_services/#{options.app_service.underscore}_spec.rb"
end
generate_model() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 36
def generate_model
  template 'model.template', "app/domain/#{name.underscore}/services/models/#{options.model.underscore}.rb"
  template 'model_spec.template', "spec/domain/#{name.underscore}/services/models/#{options.model.underscore}_spec.rb"
  template 'model_factory.template', "test/factories/#{options.model}.rb"
end
generate_repo?() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 53
def generate_repo?
  say("Not generating repository for #{options.model}Model") unless options.model.present?
  say('Not generating repository') unless options.repo?
  options.model.present? && options.repo?
end
generate_repository() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 42
def generate_repository
  template 'repository.template', "app/domain/#{name.underscore}/infrastructures/repos/#{options.model.underscore}.rb"
  template 'repository_spec.template', "spec/domain/#{name.underscore}/infrastructures/repos/#{options.model.underscore}_spec.rb"
end
generate_service() click to toggle source
# File lib/generators/domain/domain_generator.rb, line 31
def generate_service
  template 'service.template', "app/domain/#{name.underscore}/services/#{options.service.underscore}.rb"
  template 'service_spec.template', "spec/domain/#{name.underscore}/services/#{options.service.underscore}_spec.rb"
end
option_enabled?(opt) click to toggle source
# File lib/generators/domain/domain_generator.rb, line 47
def option_enabled?(opt)
  checked = options[opt.to_s].present?
  say("Not generating #{opt}.") unless checked
  checked
end