class RedisCloudAutoUpgrade
See README.md for details
Configuration
part
Constants
- Configuration
- IllegalConfiguration
- VERSION
Attributes
config[R]
Public Class Methods
new()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 17 def initialize @config = Configuration.new end
Public Instance Methods
configure(config)
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 21 def configure(config) @config.configure config self end
current_redis_cloud_plan()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 26 def current_redis_cloud_plan @__current_redis_cloud_plan ||= HerokuAPI.current_redis_cloud_plan(**heroku_params) end
current_redis_mem_usage()
click to toggle source
Memoize from lab42_core gem?
# File lib/redis_cloud_auto_upgrade.rb, line 32 def current_redis_mem_usage return @__current_redis_mem_usage__ if @__current_redis_mem_usage__ redis_instance = config.redis_instance || Redis.current @__current_redis_mem_usage__ = redis_instance.info['used_memory'].to_i end
needs_to_upgrade?()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 38 def needs_to_upgrade? !(current_redis_mem_usage < currently_available_memory * config.treshhold) end
potential_upgrade!()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 42 def potential_upgrade! raise IllegalConfiguration, config.errors_human_readable unless config.valid? do_potential_upgrade! end
Private Instance Methods
currently_available_memory()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 51 def currently_available_memory @__currently_available_memory__ ||= HerokuAPI.currently_available_memory( **config.only(:heroku_api_key, :heroku_app_name) ) end
do_potential_upgrade!()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 58 def do_potential_upgrade! if needs_to_upgrade? do_upgrade! true else info_no_upgrade false end end
do_upgrade!()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 68 def do_upgrade! old_plan = current_redis_cloud_plan new_plan = HerokuAPI.upgrade_plan!( **config.only(:heroku_api_key, :heroku_app_name) ) log_upgrade old_plan, new_plan config.on_upgrade.call(update_data(old_plan, new_plan)) if config.on_upgrade end
heroku_params()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 86 def heroku_params @__heroku_params__ ||= config.only(:heroku_api_key, :heroku_app_name) end
info(str)
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 91 def info(str) return unless config.logger config.logger.info([self.class.name, str].join(' ')) end
info_no_upgrade()
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 96 def info_no_upgrade msg = format( 'no upgrade needed %s mem usage %dMB or %d%%, treshhold: %d%%, current plan: %s', config.heroku_app_name, current_redis_mem_usage_megab, current_redis_mem_usage_percent, treshhold_in_percent, current_redis_cloud_plan ) info msg end
log_upgrade(old_plan, new_plan)
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 77 def log_upgrade(old_plan, new_plan) info <<-EOS upgraded RedisCloud plan for app: #{config.heroku_app_name} mem usage was approximately #{current_redis_mem_usage / 1_000_000}MB old_plan was #{old_plan} new_plan is #{new_plan} EOS end
update_data(old_plan, new_plan)
click to toggle source
# File lib/redis_cloud_auto_upgrade.rb, line 108 def update_data(old_plan, new_plan) OpenStruct.new( old_plan: old_plan, new_plan: new_plan, upgraded_at: Time.now, mem_usage: current_redis_mem_usage, mem_usage_in_percent: current_redis_mem_usage_percent, treshhold_in_percent: treshhold_in_percent ) end