Class: ServiceGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::ModelHelpers
Defined in:
lib/generators/service/service_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_controller_helper_to_application_controllerObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/generators/service/service_generator.rb', line 25

def add_controller_helper_to_application_controller
  application_controller_path = 'app/controllers/application_controller.rb'

  line = File.readlines(application_controller_path).select do |li|
    li =~ /class ApplicationController </
  end.first

  inject_into_file application_controller_path, after: line do
    "  include ServiceControllerHelper\n"
  end
end

#add_virtus_gem_to_gemfileObject



37
38
39
# File 'lib/generators/service/service_generator.rb', line 37

def add_virtus_gem_to_gemfile
  gem 'virtus'
end

#create_base_dirObject



19
20
21
22
23
# File 'lib/generators/service/service_generator.rb', line 19

def create_base_dir
  return if File.exist?('app/services')

  directory 'base', 'app/services'
end

#create_service_dirObject



41
42
43
44
45
46
47
48
# File 'lib/generators/service/service_generator.rb', line 41

def create_service_dir
  return if File.exist?("app/services/#{service_name}")

  empty_directory("app/services/#{service_name}")
  empty_directory("app/services/#{service_name}/usecases")
  empty_directory("app/services/#{service_name}/commands")
  empty_directory("app/services/#{service_name}/errors")
end

#generate_usecasesObject



50
51
52
53
54
55
56
57
# File 'lib/generators/service/service_generator.rb', line 50

def generate_usecases
  usecases.each do |usecase|
    generate_usecase(usecase)
    generate_command(usecase)
    generate_error(usecase)
    generate_test(usecase)
  end
end