Class: Lapsoss::ReleaseTracker
- Inherits:
-
Object
- Object
- Lapsoss::ReleaseTracker
- Defined in:
- lib/lapsoss/release_tracker.rb
Overview
Release and version tracking system
Instance Method Summary collapse
- #add_rails_app_version_provider ⇒ Object
- #add_version_provider(&block) ⇒ Object
- #clear_cache ⇒ Object
- #get_release_info ⇒ Object
-
#initialize(configuration = {}) ⇒ ReleaseTracker
constructor
A new instance of ReleaseTracker.
Constructor Details
#initialize(configuration = {}) ⇒ ReleaseTracker
Returns a new instance of ReleaseTracker.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/lapsoss/release_tracker.rb', line 8 def initialize(configuration = {}) @version_providers = configuration[:version_providers] || [] @git_enabled = configuration[:git_enabled] != false @environment_enabled = configuration[:environment_enabled] != false @deployment_enabled = configuration[:deployment_enabled] != false @cache_duration = configuration[:cache_duration] || 300 # 5 minutes @cached_release_info = nil = nil # Auto-register rails_app_version provider if available add_rails_app_version_provider if defined?(Rails) && Rails.application.respond_to?(:version) end |
Instance Method Details
#add_rails_app_version_provider ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/lapsoss/release_tracker.rb', line 75 def add_rails_app_version_provider add_version_provider do if defined?(Rails) && Rails.application.respond_to?(:version) version = Rails.application.version { rails_app_version: version.to_s, rails_app_version_cache_key: version.to_cache_key, rails_app_environment: Rails.application.env } end end end |
#add_version_provider(&block) ⇒ Object
66 67 68 |
# File 'lib/lapsoss/release_tracker.rb', line 66 def add_version_provider(&block) @version_providers << block end |
#clear_cache ⇒ Object
70 71 72 73 |
# File 'lib/lapsoss/release_tracker.rb', line 70 def clear_cache @cached_release_info = nil = nil end |
#get_release_info ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/lapsoss/release_tracker.rb', line 21 def get_release_info now = Time.zone.now # Return cached info if still valid if @cached_release_info && && (now - ) < @cache_duration return @cached_release_info end # Build fresh release info release_info = {} # Add custom version providers @version_providers.each do |provider| if provider_info = provider.call release_info.merge!(provider_info) end rescue StandardError => e warn "Release provider failed: #{e.message}" end # Add Git information if @git_enabled && (git_info = detect_git_info) release_info.merge!(git_info) end # Add environment information if @environment_enabled && (env_info = detect_environment_info) release_info.merge!(env_info) end # Add deployment information if @deployment_enabled && (deployment_info = detect_deployment_info) release_info.merge!(deployment_info) end # Generate release ID if not provided release_info[:release_id] ||= generate_release_id(release_info) # Cache the result @cached_release_info = release_info = now release_info end |