1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
extra_packages node[:juju][:extra_packages] do
action :install
end
scm_provider node[:juju][:scm_provider] do
deploy_key node[:juju][:deploy_key]
owner 'deploy'
group 'deploy'
action :bootstrap
end
rack_envfile "#{node[:rack][:root]}/shared/.env" do
variables({
rack_env: node[:juju][:rack_env],
rails_env: node[:juju][:rack_env],
port: 8080
})
user 'deploy'
group 'deploy'
mode '0644'
action :merge
end
deploy_revision node[:rack][:root] do
repo node[:juju][:repo]
action :deploy
user 'deploy'
group 'deploy'
symlink_before_migrate({'config/database.yml' => 'config/database.yml',
'.env' => '.env'})
case node[:juju][:scm_provider]
when 'git'
revision node[:juju][:revision]
ssh_wrapper "/tmp/private_code/wrap-ssh.sh"
when 'svn'
revision node[:juju][:revision]
scm_provider Chef::Provider::Subversion
svn_username node[:juju][:svn_username]
svn_password node[:juju][:svn_password]
else
raise ArgumentError
end
before_migrate do
# workaround for symlink_before_migrate() http://tickets.opscode.com/browse/CHEF-4374
directory "#{release_path}/config" do
user 'deploy'
group 'deploy'
action :create
end
bundle release_path do
user 'deploy'
group 'deploy'
action :install
end
end
before_restart do
rake_task 'assets:precompile' do
cwd "#{node[:rack][:root]}/current"
user 'deploy'
group 'deploy'
ignore_failure true
action :run
end
end
end
rack_procfile 'reverse_merge entries in Procfile' do
procfile "#{node[:rack][:root]}/current/Procfile"
entries({web: 'bundle exec rackup config.ru -p $PORT'})
user 'deploy'
group 'deploy'
mode '0644'
action :reverse_merge
end
executables do
action :export
end
|