class Jack::EbConfig::Base

Abstract Class Concrete classes should implement methods: platform and app_name

Attributes

eb_config_path[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/jack/eb_config/base.rb, line 9
def initialize(options={})
  @options = options
  @root = options[:root] || '.'
  @env_name = options[:env_name]
  @eb_config_path = "#{@root}/.elasticbeanstalk/config.yml"
  ensure_folder_exist(File.dirname(@eb_config_path))
end

Public Instance Methods

ensure_eb_init() click to toggle source
# File lib/jack/eb_config/base.rb, line 22
def ensure_eb_init
  unless File.exist?(eb_config_path)
    sh(%Q|#{eb_bin} init#{eb_base_flags} -p "#{platform}" "#{app_name}"|, @options)
  end
end
sync() click to toggle source
# File lib/jack/eb_config/base.rb, line 17
def sync
  ensure_eb_init
  write_eb_config_yml
end
write_eb_config_yml() click to toggle source
# File lib/jack/eb_config/base.rb, line 28
def write_eb_config_yml
  data = YAML.load_file(eb_config_path)
  data['global']['application_name'] = app_name # from subclass
  data['global']['default_platform'] = platform # from subclass
  dump = YAML.dump(data).gsub("!ruby/object:Hash", '')
  dump = dump.split("\n")[1..-1].join("\n") # strip first line
  File.write(eb_config_path, dump)
end