capistrano-buildpack 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -64,6 +64,13 @@ Deploy will do the following things:
64
64
  The nginx config will list at least one domain for the app: `<application>.<hostname>`, which in this case is `bugsplatdotinfo.examplevps.bugsplat.info`. Anything
65
65
  you add to the `:additional_domains` setting gets tacked on at the end.
66
66
 
67
+ Several other settings are available for controlling SSL:
68
+
69
+ * `use_ssl`: true to listen on port 443
70
+ * `ssl_cert_path`: a path to a certificate file on the server. You are responsible for getting the certificate there.
71
+ * `ssl_key_path`: a path to a key file on the server. You are responsible for getting it there.
72
+ * `force_ssl`: Force a redirect to SSL. This will unconditionally redirect to the first domain in `additional_domains`, so if you have multiple you may want to do this in your app instead.
73
+
67
74
  ## Running remote commands
68
75
 
69
76
  Sometimes you want to run a command on the other end that isn't defined in a Procfile. Do that with `cap remote`:
@@ -75,8 +82,6 @@ Sometimes you want to run a command on the other end that isn't defined in a Pro
75
82
  `Capistrano::Buildpack` will *not* run `bin/release` from the buildpack, so any environment variables that that attempts to set need to be set using `read_env`.
76
83
  In addition, at the moment the exported nginx config does not have compression turned on.
77
84
 
78
- Also, note that right now this does not support HTTPS. I'm working on it.
79
-
80
85
  ## Contributing
81
86
 
82
87
  1. Fork it
@@ -1,8 +1,24 @@
1
1
  require 'digest/sha1'
2
2
 
3
+ def _cset(name, *args, &block)
4
+ unless exists?(name)
5
+ set(name, *args, &block)
6
+ end
7
+ end
8
+
3
9
  if Capistrano::Configuration.instance
4
10
  Capistrano::Configuration.instance.load do
5
11
 
12
+ _cset(:deploy_to) { "/apps/#{application}" }
13
+ _cset(:buildpack_url) { abort "Please specify the buildpack URL to use, set :buildpack_url, 'http://example.com/buildpack'" }
14
+ _cset(:base_port) { abort "Please specify a base port to use, set :base_port, 6500" }
15
+ _cset(:concurrency) { abort "Please specify a concurrency level to use, set :concurrency, 'web-1'" }
16
+
17
+ _cset :foreman_export_path, "/etc/init"
18
+ _cset :foreman_export_type, "upstart"
19
+ _cset :nginx_export_path, "/etc/nginx/conf.d"
20
+ _cset :additional_domains, []
21
+
6
22
  def read_env(name)
7
23
  env = {}
8
24
  filename = ".env.#{name}"
@@ -21,20 +37,15 @@ if Capistrano::Configuration.instance
21
37
  namespace :buildpack do
22
38
 
23
39
  task :setup_env do
24
- set :deploy_to, "/apps/#{application}"
25
- set :foreman_export_path, "/etc/init"
26
- set :foreman_export_type, "upstart"
27
- set :nginx_export_path, "/etc/nginx/conf.d"
28
40
 
29
- set :buildpack_hash, Digest::SHA1.hexdigest(buildpack_url)
30
- set :buildpack_path, "#{shared_path}/buildpack-#{buildpack_hash}"
41
+ set(:buildpack_hash) { Digest::SHA1.hexdigest(buildpack_url) }
42
+ set(:buildpack_path) { "#{shared_path}/buildpack-#{buildpack_hash}" }
31
43
 
32
44
  default_run_options[:pty] = true
33
45
  default_run_options[:shell] = '/bin/bash'
34
46
  end
35
47
 
36
48
  task :setup do
37
- setup_env
38
49
 
39
50
  sudo "mkdir -p #{deploy_to}"
40
51
  sudo "chown -R #{user} #{deploy_to}"
@@ -62,15 +73,21 @@ if Capistrano::Configuration.instance
62
73
  end
63
74
 
64
75
  task "foreman_export" do
76
+ _use_ssl = exists?(:use_ssl) ? "USE_SSL=on" : ''
77
+ _ssl_cert_path = exists?(:ssl_cert_path) ? "SSL_CERT_PATH=#{ssl_cert_path}" : ''
78
+ _ssl_key_path = exists?(:ssl_key_path) ? "SSL_KEY_PATH=#{ssl_key_path}" : ''
79
+ _force_ssl = exists?(:force_ssl) ? "FORCE_SSL=#{force_ssl}" : ''
80
+
65
81
  sudo "foreman export #{foreman_export_type} #{foreman_export_path} -d #{release_path} -l /var/log/#{application} -a #{application} -u #{user} -p #{base_port} -c #{concurrency}"
66
- sudo "env ADDITIONAL_DOMAINS=#{additional_domains.join(',')} BASE_DOMAIN=$CAPISTRANO:HOST$ nginx-foreman export nginx #{nginx_export_path} -d #{release_path} -l /var/log/apps -a #{application} -u #{user} -p #{base_port} -c #{concurrency}"
82
+ sudo "env #{_use_ssl} #{_ssl_cert_path} #{_ssl_key_path} #{_force_ssl} ADDITIONAL_DOMAINS=#{additional_domains.join(',')} BASE_DOMAIN=$CAPISTRANO:HOST$ nginx-foreman export nginx #{nginx_export_path} -d #{release_path} -l /var/log/apps -a #{application} -u #{user} -p #{base_port} -c #{concurrency}"
67
83
  sudo "service #{application} restart || service #{application} start"
68
84
  sudo "service nginx reload || service nginx start"
69
85
  end
70
86
 
71
87
  end
72
88
 
73
-
89
+ before "deploy", "buildpack:setup_env"
90
+ before "deploy:setup", "buildpack:setup_env"
74
91
  before "deploy:setup", "buildpack:setup"
75
92
  after "deploy:setup", "buildpack:install_foreman_export_nginx"
76
93
  before "deploy", "buildpack:setup"
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Buildpack
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-buildpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-06 00:00:00.000000000 Z
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Deploy 12-factor applications using Capistrano
15
15
  email: