Class: Engineyard::Local::Middleware::DNA
Instance Method Summary
collapse
#project_dir, #ssh_exec, #ssh_exec!
#ssh_upload!
Constructor Details
#initialize(app, env) ⇒ DNA
10
11
12
13
|
# File 'lib/engineyard-local/middleware/dna.rb', line 10
def initialize(app, env)
@app = app
@env = env
end
|
Instance Method Details
#call(env) ⇒ Object
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/engineyard-local/middleware/dna.rb', line 15
def call(env)
@env[:ui].info I18n.t("eylocal.setup.dna")
create_dna
ssh_upload!(env, dna_tmp_to, dna_tmp_to)
ssh_upload!(env, solo_from, solo_tmp_to)
ssh_exec!(env, commands)
FileUtils.rm dna_tmp_to
@app.call(env)
end
|
#commands ⇒ Object
46
47
48
49
50
51
52
53
|
# File 'lib/engineyard-local/middleware/dna.rb', line 46
def commands
[
"sudo mv #{solo_tmp_to.gsub("\\","\\\\\\")} #{solo_to}",
"sudo mv #{dna_tmp_to.gsub("\\","\\\\\\")} #{dna_to}",
]
end
|
#create_dna ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/engineyard-local/middleware/dna.rb', line 26
def create_dna
dna_data = File.read(dna_from)
app_url = %Q{#{`git config remote.origin.url`}}.strip
app_url = app_url.empty? ? "file://#{Dir.pwd}" : app_url
Engineyard::Local.config['app_git_url'] = app_url
Engineyard::Local.config['app_name'] = Engineyard::Local.config['app_git_url'].sub(/^.*\/([^\/\.]+)(?:\.git)?/,'\1').strip.gsub(/\s/,'_')
Engineyard::Local.config['app_revision'] = %Q{#{`git show --format=oneline`.gsub(/^(\w+).*$/m,'\1')}}.strip
app_type = 'rack'
dna_data.gsub!(/APPNAME/,Engineyard::Local.config['app_name'])
dna_data.gsub!(/APPURL/,Engineyard::Local.config['app_git_url'])
dna_data.gsub!(/APPREVISION/,Engineyard::Local.config['app_revision'])
dna_data.gsub!(/APPTYPE/,app_type)
File.open(dna_tmp_to, "w+") {|fh| fh.write dna_data}
end
|
#dna_from ⇒ Object
55
56
57
|
# File 'lib/engineyard-local/middleware/dna.rb', line 55
def dna_from
File.expand_path("config/dna.json", Engineyard::Local.project_root)
end
|
#dna_tmp_to ⇒ Object
59
60
61
|
# File 'lib/engineyard-local/middleware/dna.rb', line 59
def dna_tmp_to
File.join(Engineyard::Local.tmp_dir,"dna.json.#{$$}")
end
|
#dna_to ⇒ Object
63
64
65
|
# File 'lib/engineyard-local/middleware/dna.rb', line 63
def dna_to
"/etc/chef/dna.json"
end
|
#solo_from ⇒ Object
67
68
69
|
# File 'lib/engineyard-local/middleware/dna.rb', line 67
def solo_from
File.expand_path("config/solo.rb", Engineyard::Local.project_root)
end
|
#solo_tmp_to ⇒ Object
71
72
73
|
# File 'lib/engineyard-local/middleware/dna.rb', line 71
def solo_tmp_to
File.join(Engineyard::Local.tmp_dir,"solo.rb.#{$$}")
end
|
#solo_to ⇒ Object
75
76
77
|
# File 'lib/engineyard-local/middleware/dna.rb', line 75
def solo_to
"/etc/chef/solo.rb"
end
|