Class: BetterService::Generators::PresenterGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/better_service/presenter_generator.rb

Overview

PresenterGenerator - Generate presenter classes for BetterService

Usage:

rails generate better_service:presenter Product
rails generate better_service:presenter Product name:string price:decimal

This generates:

- app/presenters/product_presenter.rb
- test/presenters/product_presenter_test.rb

Instance Method Summary collapse

Instance Method Details

#create_presenter_fileObject



23
24
25
# File 'lib/generators/better_service/presenter_generator.rb', line 23

def create_presenter_file
  template "presenter.rb.tt", File.join("app/presenters", class_path, "#{file_name}_presenter.rb")
end

#create_test_fileObject



27
28
29
# File 'lib/generators/better_service/presenter_generator.rb', line 27

def create_test_file
  template "presenter_test.rb.tt", File.join("test/presenters", class_path, "#{file_name}_presenter_test.rb")
end

#display_infoObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/better_service/presenter_generator.rb', line 31

def display_info
  say
  say "Presenter created: app/presenters/#{file_name}_presenter.rb", :green
  say "Test created: test/presenters/#{file_name}_presenter_test.rb", :green
  say
  say "Usage in services:", :yellow
  say "  class #{class_name.pluralize}::IndexService < IndexService"
  say "    presenter #{class_name}Presenter"
  say
  say "    presenter_options do"
  say "      { current_user: user }"
  say "    end"
  say "  end"
  say
  say "Customize the as_json method in the presenter to format your data.", :cyan
  say
end