Module: Ebfly::Command

Included in:
App, Config, Environment
Defined in:
lib/ebfly/ebfly.rb

Constant Summary collapse

PREDEFINED_SOLUTION_STACKS =
{
  "php54"    => "64bit Amazon Linux 2014.03 v1.0.3 running PHP 5.4",
  "php55"    => "64bit Amazon Linux 2014.03 v1.0.3 running PHP 5.5",
  "nodejs"   => "64bit Amazon Linux 2014.03 v1.0.3 running Node.js",
  "python26" => "64bit Amazon Linux 2014.03 v1.0.3 running Python",
  "python27" => "64bit Amazon Linux 2014.03 v1.0.3 running Python 2.7",
  "ruby19"   => "64bit Amazon Linux 2014.03 v1.0.3 running Ruby 1.9.3",
  "ruby20"   => "64bit Amazon Linux 2014.03 v1.0.3 running Ruby 2.0 (Passenger Standalone)",
  "ruby20-puma" => "64bit Amazon Linux 2014.03 v1.0.4 running Ruby 2.0 (Puma)",
  "docker0.9" => "64bit Amazon Linux 2014.03 v1.0.5 running Docker 0.9.0"
}

Instance Method Summary collapse

Instance Method Details

#debug(obj) ⇒ Object



48
49
50
# File 'lib/ebfly/ebfly.rb', line 48

def debug(obj)
  pp obj if ENV["DEBUG"]
end

#ebObject



20
21
22
23
# File 'lib/ebfly/ebfly.rb', line 20

def eb
  @eb ||= AWS::ElasticBeanstalk.new
  @eb.client
end

#env_name(app, env) ⇒ Object



63
64
65
# File 'lib/ebfly/ebfly.rb', line 63

def env_name(app, env)
  "#{app}-#{env}"
end

#exist_command?(cmd) ⇒ Boolean



52
53
54
55
56
57
58
59
60
61
# File 'lib/ebfly/ebfly.rb', line 52

def exist_command?(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
  exts.each { |ext|
    exe = File.join(path, "#{cmd}#{ext}")
    return exe if File.executable? exe
  }
  end
  return nil
end

#run(&block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/ebfly/ebfly.rb', line 29

def run(&block)
  begin
    res = yield
    raise res.error unless res.successful?
    res
  rescue => err
    style_err(err)
    exit 1
  end
end

#s3Object



25
26
27
# File 'lib/ebfly/ebfly.rb', line 25

def s3
  @s3 ||= AWS::S3.new
end

#s3_bucketObject



40
41
42
# File 'lib/ebfly/ebfly.rb', line 40

def s3_bucket
  @s3_bucket ||= (run { eb.create_storage_location }[:s3_bucket])
end

#solution_stack(name) ⇒ Object



77
78
79
80
# File 'lib/ebfly/ebfly.rb', line 77

def solution_stack(name)
  return PREDEFINED_SOLUTION_STACKS[name] if PREDEFINED_SOLUTION_STACKS.key?(name)
  return name
end

#style_err(err) ⇒ Object



44
45
46
# File 'lib/ebfly/ebfly.rb', line 44

def style_err(err)
  puts "ERR! #{err.message}" 
end

#tier(type) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/ebfly/ebfly.rb', line 67

def tier(type)
  if type == "web"
    return { name: "WebServer", type: "Standard", version: "1.0" }
  elsif type == "worker"
    return { name: "Worker", type: "SQS/HTTP", version: "1.0" }
  else
    raise "Environment tier definition not found"
  end
end