Class: Serviceable::Generators::BaseGenerator
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- Serviceable::Generators::BaseGenerator
- Defined in:
- lib/generators/serviceable/base_generator.rb
Overview
BaseGenerator - Generate a base service class for a resource namespace
Creates a ResourceBaseService that centralizes:
-
Repository initialization via RepositoryAware concern
-
Cache configuration
-
Messages namespace (I18n)
-
Presenter configuration
Usage:
rails generate serviceable:base Articles
rails generate serviceable:base Admin::Articles
rails generate serviceable:base Articles --skip_repository
rails generate serviceable:base Articles --skip_locale
This generates:
app/services/articles/base_service.rb
app/repositories/articles_repository.rb
config/locales/articles_services.en.yml
test/services/articles/base_service_test.rb
test/repositories/articles_repository_test.rb
Instance Method Summary collapse
- #create_base_service ⇒ Object
- #create_base_service_test ⇒ Object
- #create_locale ⇒ Object
- #create_repository ⇒ Object
- #create_repository_test ⇒ Object
- #show_completion_message ⇒ Object
Instance Method Details
#create_base_service ⇒ Object
41 42 43 44 |
# File 'lib/generators/serviceable/base_generator.rb', line 41 def create_base_service template "base_service.rb.tt", File.join("app/services", class_path, file_name, "base_service.rb") end |
#create_base_service_test ⇒ Object
60 61 62 63 64 65 |
# File 'lib/generators/serviceable/base_generator.rb', line 60 def create_base_service_test return if [:skip_test] template "base_service_test.rb.tt", File.join("test/services", class_path, file_name, "base_service_test.rb") end |
#create_locale ⇒ Object
53 54 55 56 57 58 |
# File 'lib/generators/serviceable/base_generator.rb', line 53 def create_locale return if [:skip_locale] template "base_locale.en.yml.tt", File.join("config/locales", "#{file_name}_services.en.yml") end |
#create_repository ⇒ Object
46 47 48 49 50 51 |
# File 'lib/generators/serviceable/base_generator.rb', line 46 def create_repository return if [:skip_repository] template "repository.rb.tt", File.join("app/repositories", class_path, "#{file_name}_repository.rb") end |
#create_repository_test ⇒ Object
67 68 69 70 71 72 |
# File 'lib/generators/serviceable/base_generator.rb', line 67 def create_repository_test return if [:skip_test] || [:skip_repository] template "repository_test.rb.tt", File.join("test/repositories", class_path, "#{file_name}_repository_test.rb") end |
#show_completion_message ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/generators/serviceable/base_generator.rb', line 74 def say "\n" + "=" * 80 say "Base service generation completed! 🎉", :green say "=" * 80 say "\nGenerated files:" say " - #{class_name}::BaseService (app/services/#{file_path}/base_service.rb)" say " - #{class_name}Repository (app/repositories/#{file_path}_repository.rb)" unless [:skip_repository] say " - I18n locale (config/locales/#{file_name}_services.en.yml)" unless [:skip_locale] say "\nNext steps:" say " 1. Customize the base service with resource-specific methods" say " 2. Add custom repository methods for your queries" say " 3. Generate CRUD services that inherit from BaseService:" say " rails generate serviceable:scaffold #{name} --base" say "\nServices will inherit like: #{class_name}::IndexService < #{class_name}::BaseService\n\n" end |