Class: Soba::Services::QueueingService
- Inherits:
-
Object
- Object
- Soba::Services::QueueingService
- Defined in:
- lib/soba/services/queueing_service.rb
Constant Summary collapse
- TODO_LABEL =
"soba:todo"- QUEUED_LABEL =
"soba:queued"
Instance Attribute Summary collapse
-
#blocking_checker ⇒ Object
readonly
Returns the value of attribute blocking_checker.
-
#github_client ⇒ Object
readonly
Returns the value of attribute github_client.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
-
#initialize(github_client:, blocking_checker:, logger: nil) ⇒ QueueingService
constructor
A new instance of QueueingService.
- #queue_next_issue(repository) ⇒ Object
Constructor Details
#initialize(github_client:, blocking_checker:, logger: nil) ⇒ QueueingService
Returns a new instance of QueueingService.
11 12 13 14 15 |
# File 'lib/soba/services/queueing_service.rb', line 11 def initialize(github_client:, blocking_checker:, logger: nil) @github_client = github_client @blocking_checker = blocking_checker @logger = logger || SemanticLogger["QueueingService"] end |
Instance Attribute Details
#blocking_checker ⇒ Object (readonly)
Returns the value of attribute blocking_checker.
9 10 11 |
# File 'lib/soba/services/queueing_service.rb', line 9 def blocking_checker @blocking_checker end |
#github_client ⇒ Object (readonly)
Returns the value of attribute github_client.
9 10 11 |
# File 'lib/soba/services/queueing_service.rb', line 9 def github_client @github_client end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
9 10 11 |
# File 'lib/soba/services/queueing_service.rb', line 9 def logger @logger end |
Instance Method Details
#queue_next_issue(repository) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/soba/services/queueing_service.rb', line 17 def queue_next_issue(repository) logger.info("Starting queueing process: #{repository}") if has_active_issue?(repository) issues = github_client.issues(repository, state: "open") reason = blocking_checker.blocking_reason(repository, issues: issues) logger.info("Skipping queueing process: #{reason}") return nil end candidate = find_next_candidate_from_repository(repository) if candidate.nil? logger.info("No issues found for queueing") return nil end result = transition_to_queued(candidate, repository) return nil if result.nil? # 競合状態検出時 candidate rescue => e logger.error("Error during queueing process: #{e.} (repository: #{repository})") raise end |