$ rails g generator Service
でジェネレータを生成する。
以下のファイルと
- lib/generators/service/service_generator.rb
- lib/generators/service/USAGE
以下のディレクトリが生成される。
- lib/generators/service/templates
次のように修正して
lib/generators/service/service_generator.rb
class ServiceGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
def generate
template 'app.erb', path_of_app
template 'spec.erb', path_of_spec
end
private
def path_of_app
File.join('app/services', "#{file_name}_service.rb")
end
def path_of_spec
File.join('spec/services', "#{file_name}_service_spec.rb")
end
end
Description:
Create a new service.
Example:
`rails generate service IssueSearch`
This will create:
app/services/issue_search_service.rb
spec/services/issue_search_service_spec.rb
以下のファイルを追加
lib/generators/service/templates/app.erb
class <%= class_name %>Service
def initialize(params = {})
end
end
lib/generators/service/templates/spec.erb
require 'rails_helper'
RSpec.describe <%= class_name %>Service do
subject { <%= class_name %>Service.new(params) }
let(:params) {
{
some_args: :write_here
}
}
pending "add some examples to (or delete) #{__FILE__}"
end
以上