Module: Ebfly::Command

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

Constant Summary collapse

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

Instance Method Summary collapse

Instance Method Details

#debug(obj) ⇒ Object



52
53
54
# File 'lib/ebfly/ebfly.rb', line 52

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

#ebObject



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

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

#env_name(app, env) ⇒ Object



67
68
69
# File 'lib/ebfly/ebfly.rb', line 67

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

#exist_command?(cmd) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
59
60
61
62
63
64
65
# File 'lib/ebfly/ebfly.rb', line 56

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



33
34
35
36
37
38
39
40
41
42
# File 'lib/ebfly/ebfly.rb', line 33

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

#s3Object



29
30
31
# File 'lib/ebfly/ebfly.rb', line 29

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

#s3_bucketObject



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

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

#solution_stack(name) ⇒ Object



83
84
85
86
# File 'lib/ebfly/ebfly.rb', line 83

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

#style_err(err) ⇒ Object



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

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

#tier(type) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
# File 'lib/ebfly/ebfly.rb', line 71

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.1" }
  elsif type == "worker1.0"
    return { name: "Worker", type: "SQS/HTTP", version: "1.0" }
  else
    raise "Environment tier definition not found"
  end
end