Class: EY::Deploy::Configuration
- Inherits:
-
Object
- Object
- EY::Deploy::Configuration
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
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
#configuration ⇒ Object
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_path ⇒ Object
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
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_releases ⇒ Object
101
102
103
|
# File 'lib/ey-deploy/configuration.rb', line 101
def all_releases
Dir.glob("#{release_dir}/*").sort
end
|
#copy_exclude ⇒ Object
80
81
82
|
# File 'lib/ey-deploy/configuration.rb', line 80
def copy_exclude
@copy_exclude ||= Array(configuration.fetch("copy_exclude", []))
end
|
#current_path ⇒ Object
109
110
111
|
# File 'lib/ey-deploy/configuration.rb', line 109
def current_path
File.join(deploy_to, "current")
end
|
#deploy_to ⇒ Object
59
60
61
|
# File 'lib/ey-deploy/configuration.rb', line 59
def deploy_to
configuration['deploy_to'] || "/data/#{app}"
end
|
#environment ⇒ Object
84
85
86
|
# File 'lib/ey-deploy/configuration.rb', line 84
def environment
configuration['framework_env']
end
|
#exclusions ⇒ Object
125
126
127
|
# File 'lib/ey-deploy/configuration.rb', line 125
def exclusions
copy_exclude.map { |e| %|--exclude="#{e}"| }.join(' ')
end
|
#framework_envs ⇒ Object
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
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_release ⇒ Object
88
89
90
|
# File 'lib/ey-deploy/configuration.rb', line 88
def latest_release
all_releases.last
end
|
#migrate? ⇒ Boolean
63
64
65
|
# File 'lib/ey-deploy/configuration.rb', line 63
def migrate?
!!configuration['migrate']
end
|
#migration_command ⇒ Object
67
68
69
|
# File 'lib/ey-deploy/configuration.rb', line 67
def migration_command
configuration['migrate'] == "migrate" ? DEFAULT_CONFIG["migrate"] : configuration['migrate']
end
|
47
48
49
|
# File 'lib/ey-deploy/configuration.rb', line 47
def node
EY.node
end
|
#oldest_release ⇒ Object
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_dir ⇒ Object
117
118
119
|
# File 'lib/ey-deploy/configuration.rb', line 117
def release_dir
File.join(deploy_to, "releases")
end
|
#repository_cache ⇒ Object
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
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
|
51
52
53
|
# File 'lib/ey-deploy/configuration.rb', line 51
def revision
IO.read(File.join(latest_release, 'REVISION'))
end
|
76
77
78
|
# File 'lib/ey-deploy/configuration.rb', line 76
def role
node['instance_role']
end
|
#shared_path ⇒ Object
113
114
115
|
# File 'lib/ey-deploy/configuration.rb', line 113
def shared_path
File.join(deploy_to, "shared")
end
|
#user ⇒ Object
Also known as:
group
71
72
73
|
# File 'lib/ey-deploy/configuration.rb', line 71
def user
ENV['USER']
end
|