У меня есть класс, который создает проблему на доске Jira. Я хочу использовать его в 5 различных сценариях ios, но единственное, что будет отличаться, - это обязательные поля, такие как summary
, description
и issuetype
. Как справиться с таким сценарием, чтобы избежать создания нескольких классов с 90% одинаковым содержимым?
Это основное содержимое класса:
module Jira
class TicketCreator
def call
issue = client.Issue.build
issue.save(required_fields)
end
private
def client
@client ||= Jira::JiraConnection.new.call
end
def required_fields
#data from below examples
end
end
end
Вот сценарий ios для обязательных поля, которые я хочу использовать, зависят от информации о webhook:
def required_fields
{
'fields' => {
'summary' => 'Create new repo <github_repo> for <Github user>',
'description' => 'This is an automatic confirmation of creating new PRIVATE repo
- <github_repo> for <Github user>',
'project' => { 'key' => 'TEST' },
'issuetype' => { 'id' => '12580' },
'customfield_15100' => 'None'
}
}
end
def required_fields
{
'fields' => {
'summary' => 'Add <Github user> collaborator to <github_repo>',
'description' => 'This is an automatic ticket confirmation of user added',
'project' => { 'key' => 'TEST' },
'issuetype' => { 'id' => '12580' }, # nonautoresolved
'customfield_15100' => 'None'
}
}
end
def required_fields
{
'fields' => {
'summary' => 'Recheck <Github user> deleted <github_repo>',
'description' => 'This is an automatic ticket confirmation of delete repo <github_repo>',
'project' => { 'key' => 'TEST' }, # change to project_key
'issuetype' => { 'id' => '12579' }, # autoresolved
'customfield_15100' => 'None'
}
}
end
Как избежать создания новых классов, где единственным отличием будет этот required_fields
метод?