~charmers/charms/precise/rails/trunk

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