Class: EY::Deploy::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ey-deploy/configuration.rb

Constant Summary collapse

DEFAULT_CONFIG =
Thor::CoreExt::HashWithIndifferentAccess.new({
  "branch"       => "master",
  "strategy"     => "Git",
})

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Configuration

Returns a new instance of Configuration.



16
17
18
19
20
# File 'lib/ey-deploy/configuration.rb', line 16

def initialize(opts={})
  @release_path = opts[:release_path]
  config = JSON.parse(opts["config"] || "{}")
  @configuration = DEFAULT_CONFIG.merge(config).merge(opts)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &blk) ⇒ Object

Delegate to the configuration objects



23
24
25
# File 'lib/ey-deploy/configuration.rb', line 23

def method_missing(meth, *args, &blk)
  c.key?(meth.to_s) ? c[meth.to_s] : super
end

Instance Attribute Details

#configurationObject (readonly) Also known as: c

Returns the value of attribute configuration.



11
12
13
# File 'lib/ey-deploy/configuration.rb', line 11

def configuration
  @configuration
end

#release_pathObject



121
122
123
# File 'lib/ey-deploy/configuration.rb', line 121

def release_path
  @release_path ||= File.join(release_dir, Time.now.utc.strftime("%Y%m%d%H%M%S"))
end

Instance Method Details

#[](key) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/ey-deploy/configuration.rb', line 31

def [](key)
  if respond_to?(key.to_sym)
    send(key.to_sym)
  else
    c[key]
  end
end

#all_releasesObject



101
102
103
# File 'lib/ey-deploy/configuration.rb', line 101

def all_releases
  Dir.glob("#{release_dir}/*").sort
end

#copy_excludeObject



80
81
82
# File 'lib/ey-deploy/configuration.rb', line 80

def copy_exclude
  @copy_exclude ||= Array(configuration.fetch("copy_exclude", []))
end

#current_pathObject



109
110
111
# File 'lib/ey-deploy/configuration.rb', line 109

def current_path
  File.join(deploy_to, "current")
end

#deploy_toObject



59
60
61
# File 'lib/ey-deploy/configuration.rb', line 59

def deploy_to
  configuration['deploy_to'] || "/data/#{app}"
end

#environmentObject



84
85
86
# File 'lib/ey-deploy/configuration.rb', line 84

def environment
  configuration['framework_env']
end

#exclusionsObject



125
126
127
# File 'lib/ey-deploy/configuration.rb', line 125

def exclusions
  copy_exclude.map { |e| %|--exclude="#{e}"| }.join(' ')
end

#framework_envsObject



105
106
107
# File 'lib/ey-deploy/configuration.rb', line 105

def framework_envs
  "RAILS_ENV=#{environment} RACK_ENV=#{environment} MERB_ENV=#{environment}"
end

#has_key?(key) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
42
43
44
45
# File 'lib/ey-deploy/configuration.rb', line 39

def has_key?(key)
  if respond_to?(key.to_sym)
    true
  else
    c.has_key?(key)
  end
end

#latest_releaseObject



88
89
90
# File 'lib/ey-deploy/configuration.rb', line 88

def latest_release
  all_releases.last
end

#migrate?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/ey-deploy/configuration.rb', line 63

def migrate?
  !!configuration['migrate']
end

#migration_commandObject



67
68
69
# File 'lib/ey-deploy/configuration.rb', line 67

def migration_command
  configuration['migrate'] == "migrate" ? DEFAULT_CONFIG["migrate"] : configuration['migrate']
end

#nodeObject



47
48
49
# File 'lib/ey-deploy/configuration.rb', line 47

def node
  EY.node
end

#oldest_releaseObject



97
98
99
# File 'lib/ey-deploy/configuration.rb', line 97

def oldest_release
  all_releases.first
end

#previous_release(current = latest_release) ⇒ Object



92
93
94
95
# File 'lib/ey-deploy/configuration.rb', line 92

def previous_release(current=latest_release)
  index = all_releases.index(current)
  all_releases[index-1]
end

#release_dirObject



117
118
119
# File 'lib/ey-deploy/configuration.rb', line 117

def release_dir
  File.join(deploy_to, "releases")
end

#repository_cacheObject



55
56
57
# File 'lib/ey-deploy/configuration.rb', line 55

def repository_cache
  configuration['repository_cache'] || File.join(deploy_to, "/shared/cached-copy")
end

#respond_to?(meth, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/ey-deploy/configuration.rb', line 27

def respond_to?(meth, include_private=false)
  c.key?(meth.to_s) ? true : super
end

#revisionObject



51
52
53
# File 'lib/ey-deploy/configuration.rb', line 51

def revision
  IO.read(File.join(latest_release, 'REVISION'))
end

#roleObject



76
77
78
# File 'lib/ey-deploy/configuration.rb', line 76

def role
  node['instance_role']
end

#shared_pathObject



113
114
115
# File 'lib/ey-deploy/configuration.rb', line 113

def shared_path
  File.join(deploy_to, "shared")
end

#userObject Also known as: group



71
72
73
# File 'lib/ey-deploy/configuration.rb', line 71

def user
  ENV['USER']
end