errorstudio_capistrano_recipes 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/errorstudio_capistrano_recipes.gemspec +34 -0
- data/lib/capistrano/errorstudio.rb +5 -0
- data/lib/capistrano/errorstudio/composer.rb +3 -0
- data/lib/capistrano/errorstudio/cron.rb +2 -0
- data/lib/capistrano/errorstudio/nginx.rb +2 -0
- data/lib/capistrano/errorstudio/ownership.rb +1 -0
- data/lib/capistrano/errorstudio/passenger.rb +2 -0
- data/lib/capistrano/errorstudio/prompts.rb +1 -0
- data/lib/capistrano/errorstudio/rails.rb +13 -0
- data/lib/capistrano/errorstudio/rvm.rb +4 -0
- data/lib/capistrano/errorstudio/static.rb +4 -0
- data/lib/capistrano/errorstudio/tasks/composer.rake +12 -0
- data/lib/capistrano/errorstudio/tasks/cron.rake +15 -0
- data/lib/capistrano/errorstudio/tasks/nginx.rake +198 -0
- data/lib/capistrano/errorstudio/tasks/ownership.rake +11 -0
- data/lib/capistrano/errorstudio/tasks/passenger.rake +76 -0
- data/lib/capistrano/errorstudio/tasks/prompts.rake +18 -0
- data/lib/capistrano/errorstudio/tasks/rails.rake +80 -0
- data/lib/capistrano/errorstudio/tasks/rvm.rake +49 -0
- data/lib/capistrano/errorstudio/tasks/static.rake +0 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/basic_auth.erb +8 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/cloudflare_real_ips.erb +4 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/cors.erb +34 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/custom_aliases.erb +5 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/custom_rules.erb +3 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/location_proxy_cache.erb +6 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/nginx_vhost.conf.erb +84 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/path_redirects.erb +5 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/php.erb +27 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/proxy_cache_path.erb +1 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/redirects.erb +10 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/rewrites.erb +7 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/ssl_settings.erb +24 -0
- data/lib/capistrano/errorstudio/tasks/templates/nginx/upstream_proxy.erb +11 -0
- data/lib/capistrano/errorstudio/tasks/templates/passenger/passenger_init.erb +27 -0
- data/lib/capistrano/errorstudio/tasks/templates/rails/database.yml.erb +8 -0
- data/lib/capistrano/errorstudio/tasks/templates/rails/secrets.yml.erb +5 -0
- data/lib/capistrano/errorstudio/tasks/templates/wordpress/env.erb +23 -0
- data/lib/capistrano/errorstudio/tasks/wordpress.rake +158 -0
- data/lib/capistrano/errorstudio/wordpress.rb +12 -0
- data/lib/version.rb +3 -0
- metadata +209 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
<% if fetch(:default_ssl_host, false)%>
|
3
|
+
listen 443 default_server ssl;
|
4
|
+
<% else %>
|
5
|
+
listen 443 ssl;
|
6
|
+
listen 80;
|
7
|
+
<% end %>
|
8
|
+
ssl_certificate /etc/nginx/ssl/<%= fetch(:deploy_domain) %>.crt;
|
9
|
+
ssl_certificate_key /etc/nginx/ssl/<%= fetch(:deploy_domain) %>.key;
|
10
|
+
ssl_dhparam /etc/nginx/ssl/<%= fetch(:deploy_domain) %>.pem;
|
11
|
+
ssl_prefer_server_ciphers On;
|
12
|
+
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
13
|
+
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
|
14
|
+
<% if fetch(:include_nginx_hpkp, false) %>
|
15
|
+
add_header Public-Key-Pins 'pin-sha256="<%= fetch(:certificate_sha256).strip %>"; max-age=5184000; includeSubDomains';
|
16
|
+
<% end %>
|
17
|
+
<% if fetch(:force_ssl,true) %>
|
18
|
+
if ($server_port = 80) {
|
19
|
+
return 301 https://$host$request_uri;
|
20
|
+
}
|
21
|
+
<% if fetch(:include_nginx_hsts, false) %>
|
22
|
+
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
location <%= fetch(:proxy_for_location, "/") %> {
|
2
|
+
if ($args ~* "domain_redirected=(.*)$") {
|
3
|
+
add_header X-domain-redirected $1;
|
4
|
+
}
|
5
|
+
proxy_pass <%= fetch(:upstream_proxy_scheme, "http://") %><%= fetch(:upstream_proxy_host, "127.0.0.1") %>:<%= fetch(:upstream_proxy_port) %>;
|
6
|
+
proxy_read_timeout <%= fetch(:upstream_proxy_read_timeout, "3m") %>;
|
7
|
+
proxy_set_header X-Real-IP $remote_addr;
|
8
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
9
|
+
proxy_set_header Host $host;
|
10
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
11
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: <%= fetch(:application) %>_<%= fetch(:rails_env) %>_passenger
|
4
|
+
# Required-Start: $remote_fs $syslog
|
5
|
+
# Required-Stop: $remote_fs $syslog
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: Passenger for <%= fetch(:application) %>
|
9
|
+
# Description: This file starts and stops Passenger for <%= fetch(:application) %>, <%= fetch(:rails_env) %> environment
|
10
|
+
#
|
11
|
+
### END INIT INFO
|
12
|
+
|
13
|
+
case "$1" in
|
14
|
+
start)
|
15
|
+
<%= start_passenger_command %>
|
16
|
+
;;
|
17
|
+
stop)
|
18
|
+
<%= stop_passenger_command %>
|
19
|
+
;;
|
20
|
+
restart)
|
21
|
+
<%= restart_passenger_command %>
|
22
|
+
;;
|
23
|
+
*)
|
24
|
+
echo "Usage: <%= fetch(:application) %>_<%= fetch(:rails_env) %>_passenger {start|stop|restart}" >&2
|
25
|
+
exit 3
|
26
|
+
;;
|
27
|
+
esac
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= fetch(:rails_env)%>:
|
2
|
+
adapter: <%= fetch(:db_adaptor,'mysql2') %>
|
3
|
+
encoding: <%= fetch(:db_encoding,'utf8') %>
|
4
|
+
database: <%= fetch(:db_name) %>
|
5
|
+
pool: <%= fetch(:db_pool,5) %>
|
6
|
+
username: <%= fetch(:db_username) %>
|
7
|
+
password: <%= fetch(:db_password) %>
|
8
|
+
host: <%= fetch(:db_server) %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
DB_NAME=<%= fetch(:db_name)%>
|
2
|
+
DB_USER=<%= fetch(:db_username) %>
|
3
|
+
DB_PASSWORD=<%= fetch(:db_password)%>
|
4
|
+
DB_HOST=<%= fetch(:db_host) %>
|
5
|
+
DB_PREFIX=<%= fetch(:db_prefix) %>
|
6
|
+
|
7
|
+
WP_ENV=<%= fetch(:stage) %>
|
8
|
+
WP_URL=<%= fetch(:ssl_required,false) ? "https://" : "http://" %><%= fetch(:deploy_domain) %>
|
9
|
+
WP_HOME=<%= fetch(:ssl_required,false) ? "https://" : "http://" %><%= fetch(:deploy_domain) %>
|
10
|
+
WP_SITEURL=<%= fetch(:ssl_required,false) ? "https://" : "http://" %><%= fetch(:deploy_domain) %>
|
11
|
+
DOMAIN_CURRENT_SITE=<%= fetch(:deploy_domain) %>
|
12
|
+
AUTH_KEY=<%= fetch(:wp_auth_key) %>
|
13
|
+
SECURE_AUTH_KEY=<%= fetch(:wp_secure_auth_key) %>
|
14
|
+
LOGGED_IN_KEY=<%= fetch(:wp_logged_in_key) %>
|
15
|
+
NONCE_KEY=<%= fetch(:wp_nonce_key) %>
|
16
|
+
AUTH_SALT=<%= fetch(:wp_auth_salt) %>
|
17
|
+
SECURE_AUTH_SALT=<%= fetch(:wp_secure_auth_salt) %>
|
18
|
+
LOGGED_IN_SALT=<%= fetch(:wp_logged_in_salt) %>
|
19
|
+
NONCE_SALT=<%= fetch(:wp_nonce_salt) %>
|
20
|
+
|
21
|
+
<% fetch(:custom_env_vars,{}).each do |env,var| %>
|
22
|
+
<%= "#{env}=#{var}" %>
|
23
|
+
<% end %>
|
@@ -0,0 +1,158 @@
|
|
1
|
+
namespace :wordpress do
|
2
|
+
namespace :assets do
|
3
|
+
desc "Download assets for the site"
|
4
|
+
task :download do
|
5
|
+
on roles(:web) do
|
6
|
+
if ENV.has_key?('delete') and ENV['delete']
|
7
|
+
if confirm("You're about to download assets from the server and delete your local")
|
8
|
+
puts %x(rsync -rlvz --delete #{fetch(:web_server)}:#{shared_path}/#{fetch(:uploads_folder)}/ ./#{fetch(:uploads_folder)}/)
|
9
|
+
end
|
10
|
+
else
|
11
|
+
puts "Downloading assets"
|
12
|
+
puts %x(rsync -rlvz #{fetch(:web_server)}:#{shared_path}/#{fetch(:uploads_folder)}/ ./#{fetch(:uploads_folder)}/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Upload assets on the server. Optionally pass delete env var to rsync with the --delete switch"
|
18
|
+
task :upload do
|
19
|
+
on roles(:web) do |server|
|
20
|
+
if ENV.has_key?('delete') and ENV['delete']
|
21
|
+
if confirm("You're about to upload assets to the server and delete any differences")
|
22
|
+
puts %x(rsync -rlvz --delete ./#{fetch(:uploads_folder)}/ #{server.hostname}:#{shared_path}/#{fetch(:uploads_folder)}/)
|
23
|
+
end
|
24
|
+
else
|
25
|
+
puts "Uploading new assets"
|
26
|
+
puts %x(rsync -rlvz ./#{fetch(:uploads_folder)}/ #{server.hostname}:#{shared_path}/#{fetch(:uploads_folder)}/)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
namespace :code do
|
33
|
+
desc "Download the code from the server."
|
34
|
+
task :download do
|
35
|
+
on roles(:web) do |server|
|
36
|
+
if confirm("You're about to download code from the server")
|
37
|
+
puts %x(rsync -rlvz --exclude='wp-config.php' --exclude='config/' --exclude='#{fetch(:uploads_folder)}' #{server.hostname}:#{current_path}/public/ ./public/)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# The order of tasks here is: wordpress:db:create_config [check the config doesn't exist] => wordpress:db:create => wordpress:db:grant
|
44
|
+
namespace :db do
|
45
|
+
set :db_password, (0...20).map{ [('0'..'9'),('A'..'Z'),('a'..'z')].map {|range| range.to_a}.flatten[rand(64)] }.join
|
46
|
+
set :db_username, -> {"#{fetch(:application).gsub(/[^A-z]/,"").to_s[0..7]}_#{fetch(:stage).to_s[0..3]}"}
|
47
|
+
set :db_name, -> {"#{fetch(:application).gsub(/[^A-z]/,"").to_s[0..53]}_#{fetch(:db_suffix, fetch(:stage).to_s[0..9])}"}
|
48
|
+
desc 'Generate a config for wordpress / bedrock'
|
49
|
+
task :create_config do
|
50
|
+
on roles(:app) do
|
51
|
+
unless test("[ -f #{shared_path}/.env ]")
|
52
|
+
puts "running the create config task."
|
53
|
+
[
|
54
|
+
"wp_auth_key",
|
55
|
+
"wp_secure_auth_key",
|
56
|
+
"wp_logged_in_key",
|
57
|
+
"wp_nonce_key",
|
58
|
+
"wp_auth_salt",
|
59
|
+
"wp_secure_auth_salt",
|
60
|
+
"wp_logged_in_salt",
|
61
|
+
"wp_nonce_salt"
|
62
|
+
].each do |k|
|
63
|
+
if fetch(:"#{k}",nil).nil?
|
64
|
+
set :"#{k}", SecureRandom.urlsafe_base64(40)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
file = File.join(File.dirname(__FILE__), "templates", "wordpress", "env.erb")
|
68
|
+
buffer = ERB.new(File.read(file)).result(binding)
|
69
|
+
upload! StringIO.new(buffer), "#{shared_path}/.env"
|
70
|
+
invoke "wordpress:db:create"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Create the database unless it exists"
|
76
|
+
task :create do
|
77
|
+
on roles(:db) do
|
78
|
+
prompt_for_login
|
79
|
+
db_sql = "CREATE DATABASE IF NOT EXISTS #{fetch(:db_name)};"
|
80
|
+
execute "mysql --user=#{fetch(:server_admin_username)} --password=#{fetch(:server_admin_password)} --execute=\"#{db_sql}\""
|
81
|
+
end
|
82
|
+
invoke "wordpress:db:grant"
|
83
|
+
end
|
84
|
+
|
85
|
+
desc "Grant access to the database"
|
86
|
+
task :grant do
|
87
|
+
on roles(:db) do
|
88
|
+
prompt_for_login
|
89
|
+
puts "Creating #{fetch(:wp_db_user)}"
|
90
|
+
%w{10.% 127.% localhost}.each do |ip|
|
91
|
+
user_sql = "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER on #{fetch(:db_name)}.* TO #{fetch(:db_username)}@'#{ip}' IDENTIFIED BY '#{fetch(:db_password)}';"
|
92
|
+
execute "mysql --user=#{fetch(:server_admin_username)} --password=#{fetch(:server_admin_password)} --execute=\"#{user_sql}\""
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
desc "Upload a local wordpress db to the server"
|
98
|
+
task :upload do
|
99
|
+
on roles(:db) do
|
100
|
+
if confirm("You're about to overwrite the #{fetch(:wp_db_name)} database on the server")
|
101
|
+
prompt_for_login
|
102
|
+
get_db_details
|
103
|
+
if fetch(:ssl_required,false)
|
104
|
+
db = %x(mysqldump --add-drop-table --host='#{fetch(:local_db_server)}' --port='#{fetch(:local_db_port)}' --user='#{fetch(:local_db_username)}' --password='#{fetch(:local_db_password)}' #{fetch(:local_db_name)} | sed 's/#{fetch(:local_domain)}/#{fetch(:deploy_domain)}/g' | sed 's/http:\\/\\/#{fetch(:deploy_domain)}/https:\\/\\/#{fetch(:deploy_domain)}/g' | gzip)
|
105
|
+
else
|
106
|
+
db = %x(mysqldump --add-drop-table --host='#{fetch(:local_db_server)}' --port='#{fetch(:local_db_port)}' --user='#{fetch(:local_db_username)}' --password='#{fetch(:local_db_password)}' #{fetch(:local_db_name)} | sed 's/#{fetch(:local_domain)}/#{fetch(:deploy_domain)}/g' | gzip)
|
107
|
+
end
|
108
|
+
upload! StringIO.new(db), "/tmp/#{fetch(:deploy_domain)}.sql.gz"
|
109
|
+
puts "Setting up database"
|
110
|
+
execute "zcat /tmp/#{fetch(:deploy_domain)}.sql.gz | mysql --user=#{fetch(:server_admin_username)} --password=#{fetch(:server_admin_password)} #{fetch(:db_name)}"
|
111
|
+
execute "rm /tmp/#{fetch(:deploy_domain)}.sql.gz"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
desc "Download the live db for local development"
|
117
|
+
task :download do
|
118
|
+
on roles(:db) do
|
119
|
+
if confirm("You're about to overwrite your local database.")
|
120
|
+
prompt_for_login
|
121
|
+
get_db_details
|
122
|
+
if fetch(:ssl_required,false)
|
123
|
+
execute "mysqldump --add-drop-table --skip-extended-insert --user='#{fetch(:server_admin_username)}' --password='#{fetch(:server_admin_password)}' #{fetch(:db_name)} | sed 's/#{fetch(:deploy_domain)}/#{fetch(:local_domain)}/g' | sed 's/https:\\/\\/#{fetch(:local_domain)}/http:\\/\\/#{fetch(:local_domain)}/g' | gzip > /tmp/#{fetch(:deploy_domain)}.sql.gz"
|
124
|
+
else
|
125
|
+
execute "mysqldump --add-drop-table --skip-extended-insert --user='#{fetch(:server_admin_username)}' --password='#{fetch(:server_admin_password)}' #{fetch(:db_name)} | sed 's/#{fetch(:deploy_domain)}/#{fetch(:local_domain)}/g' | gzip > /tmp/#{fetch(:deploy_domain)}.sql.gz"
|
126
|
+
end
|
127
|
+
download! "/tmp/#{fetch(:deploy_domain)}.sql.gz","#{fetch(:deploy_domain)}.sql.gz"
|
128
|
+
%x(gunzip -c #{fetch(:deploy_domain)}.sql.gz | mysql --max_allowed_packet=1000M --host='#{fetch(:local_db_server)}' --port='#{fetch(:local_db_port)}' --user='#{fetch(:local_db_username)}' --password='#{fetch(:local_db_password)}' #{fetch(:local_db_name)})
|
129
|
+
execute "rm /tmp/#{fetch(:deploy_domain)}.sql.gz"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
desc "Symlink the .env file with config for the site"
|
138
|
+
task :symlink_env => "db:create_config" do
|
139
|
+
on roles(:app) do
|
140
|
+
execute "ln -s #{shared_path}/.env #{current_path}/public/"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
def get_db_details
|
147
|
+
set :local_domain, fetch(:local_domain,ask("Local WP domain", ""))
|
148
|
+
set :local_db_username, fetch(:local_db_username,ask("Local DB username", ""))
|
149
|
+
set :local_db_password, fetch(:local_db_password,ask("Local DB password", ""))
|
150
|
+
set :local_db_server, fetch(:local_db_server,ask("Local DB server port", "localhost"))
|
151
|
+
set :local_db_server_port, fetch(:local_db_server_port,ask("Local DB server port", 3306))
|
152
|
+
set :local_db_name, fetch(:local_db_name,ask("Local DB name",fetch(:application)))
|
153
|
+
end
|
154
|
+
|
155
|
+
after "deploy:check:make_linked_dirs", "wordpress:db:create_config"
|
156
|
+
after "deploy:check", "nginx:check_config"
|
157
|
+
before "deploy:cleanup", "deploy:set_ownership"
|
158
|
+
before "deploy:cleanup", "wordpress:symlink_env"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'capistrano/errorstudio'
|
2
|
+
require 'securerandom'
|
3
|
+
require 'capistrano/errorstudio/composer'
|
4
|
+
require 'capistrano/errorstudio/nginx'
|
5
|
+
set :web_server, ->{ roles(:web).first.hostname }
|
6
|
+
set :db_server, ->{ roles(:db).first.hostname }
|
7
|
+
set :linked_dirs, fetch(:linked_dirs,[]).push(fetch(:uploads_folder,"public/wp-content/uploads"))
|
8
|
+
# set :wp_db_host, fetch(:wp_db_host, "localhost")
|
9
|
+
# set :wp_db_prefix, fetch(:wp_db_prefix, "wp_")
|
10
|
+
set :php_required, true
|
11
|
+
load File.expand_path("../tasks/wordpress.rake", __FILE__)
|
12
|
+
|
data/lib/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: errorstudio_capistrano_recipes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.10
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ed Jones
|
8
|
+
- Paul Hendrick
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
|
+
cert_chain: []
|
12
|
+
date: 2018-07-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.10'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.10'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: capistrano
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 3.11.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 3.11.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: capistrano-composer
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.0.6
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.0.6
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: capistrano-bundler
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: capistrano-rails
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rvm1-capistrano3
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: capistrano-passenger
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: Cap recipes we use to deploy our websites.
|
127
|
+
email:
|
128
|
+
- ed@error.agency
|
129
|
+
- paul@error.agency
|
130
|
+
executables: []
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- ".gitignore"
|
135
|
+
- ".ruby-gemset"
|
136
|
+
- ".ruby-version"
|
137
|
+
- CODE_OF_CONDUCT.md
|
138
|
+
- Gemfile
|
139
|
+
- LICENSE.txt
|
140
|
+
- README.md
|
141
|
+
- Rakefile
|
142
|
+
- bin/console
|
143
|
+
- bin/setup
|
144
|
+
- errorstudio_capistrano_recipes.gemspec
|
145
|
+
- lib/capistrano/errorstudio.rb
|
146
|
+
- lib/capistrano/errorstudio/composer.rb
|
147
|
+
- lib/capistrano/errorstudio/cron.rb
|
148
|
+
- lib/capistrano/errorstudio/nginx.rb
|
149
|
+
- lib/capistrano/errorstudio/ownership.rb
|
150
|
+
- lib/capistrano/errorstudio/passenger.rb
|
151
|
+
- lib/capistrano/errorstudio/prompts.rb
|
152
|
+
- lib/capistrano/errorstudio/rails.rb
|
153
|
+
- lib/capistrano/errorstudio/rvm.rb
|
154
|
+
- lib/capistrano/errorstudio/static.rb
|
155
|
+
- lib/capistrano/errorstudio/tasks/composer.rake
|
156
|
+
- lib/capistrano/errorstudio/tasks/cron.rake
|
157
|
+
- lib/capistrano/errorstudio/tasks/nginx.rake
|
158
|
+
- lib/capistrano/errorstudio/tasks/ownership.rake
|
159
|
+
- lib/capistrano/errorstudio/tasks/passenger.rake
|
160
|
+
- lib/capistrano/errorstudio/tasks/prompts.rake
|
161
|
+
- lib/capistrano/errorstudio/tasks/rails.rake
|
162
|
+
- lib/capistrano/errorstudio/tasks/rvm.rake
|
163
|
+
- lib/capistrano/errorstudio/tasks/static.rake
|
164
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/basic_auth.erb
|
165
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/cloudflare_real_ips.erb
|
166
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/cors.erb
|
167
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/custom_aliases.erb
|
168
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/custom_rules.erb
|
169
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/location_proxy_cache.erb
|
170
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/nginx_vhost.conf.erb
|
171
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/path_redirects.erb
|
172
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/php.erb
|
173
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/proxy_cache_path.erb
|
174
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/redirects.erb
|
175
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/rewrites.erb
|
176
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/ssl_settings.erb
|
177
|
+
- lib/capistrano/errorstudio/tasks/templates/nginx/upstream_proxy.erb
|
178
|
+
- lib/capistrano/errorstudio/tasks/templates/passenger/passenger_init.erb
|
179
|
+
- lib/capistrano/errorstudio/tasks/templates/rails/database.yml.erb
|
180
|
+
- lib/capistrano/errorstudio/tasks/templates/rails/secrets.yml.erb
|
181
|
+
- lib/capistrano/errorstudio/tasks/templates/wordpress/env.erb
|
182
|
+
- lib/capistrano/errorstudio/tasks/wordpress.rake
|
183
|
+
- lib/capistrano/errorstudio/wordpress.rb
|
184
|
+
- lib/version.rb
|
185
|
+
homepage: https://github.com/errorstudio/errorstudio_capistrano_recipes
|
186
|
+
licenses:
|
187
|
+
- MIT
|
188
|
+
metadata: {}
|
189
|
+
post_install_message:
|
190
|
+
rdoc_options: []
|
191
|
+
require_paths:
|
192
|
+
- lib
|
193
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
requirements: []
|
204
|
+
rubyforge_project:
|
205
|
+
rubygems_version: 2.6.14
|
206
|
+
signing_key:
|
207
|
+
specification_version: 4
|
208
|
+
summary: Error's cap recipes
|
209
|
+
test_files: []
|