Class: Gjallarhorn::Deployment::Strategy Abstract
- Inherits:
-
Object
- Object
- Gjallarhorn::Deployment::Strategy
- Defined in:
- lib/gjallarhorn/deployment/strategy.rb
Overview
This class is abstract.
Subclass and override deployment methods
Base class for deployment strategies
Defines the interface that all deployment strategies must implement. Each strategy handles the specifics of how containers are deployed, updated, and managed during the deployment process.
Direct Known Subclasses
Instance Attribute Summary collapse
- #adapter ⇒ Object readonly
- #logger ⇒ Object readonly
- #proxy_manager ⇒ Object readonly
Instance Method Summary collapse
-
#deploy(image:, environment:, services:) ⇒ void
abstract
Deploy services using this strategy.
-
#initialize(adapter, proxy_manager, logger = nil) ⇒ Strategy
constructor
Initialize a deployment strategy.
-
#name ⇒ String
Get strategy name.
-
#zero_downtime? ⇒ Boolean
Check if strategy supports zero-downtime deployments.
Constructor Details
#initialize(adapter, proxy_manager, logger = nil) ⇒ Strategy
Initialize a deployment strategy
23 24 25 26 27 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 23 def initialize(adapter, proxy_manager, logger = nil) @adapter = adapter @proxy_manager = proxy_manager @logger = logger || Logger.new($stdout) end |
Instance Attribute Details
#adapter ⇒ Object (readonly)
16 17 18 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 16 def adapter @adapter end |
#logger ⇒ Object (readonly)
16 17 18 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 16 def logger @logger end |
#proxy_manager ⇒ Object (readonly)
16 17 18 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 16 def proxy_manager @proxy_manager end |
Instance Method Details
#deploy(image:, environment:, services:) ⇒ void
This method is abstract.
Subclasses must implement this method
This method returns an undefined value.
Deploy services using this strategy
37 38 39 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 37 def deploy(image:, environment:, services:) raise NotImplementedError, "Subclasses must implement deploy method" end |
#name ⇒ String
Get strategy name
51 52 53 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 51 def name self.class.name.split("::").last.downcase end |
#zero_downtime? ⇒ Boolean
Check if strategy supports zero-downtime deployments
44 45 46 |
# File 'lib/gjallarhorn/deployment/strategy.rb', line 44 def zero_downtime? false end |