capistrano-deploy-recipes 0.1.1 → 0.1.5
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.
- checksums.yaml +5 -13
- data/.gitignore +0 -0
- data/Gemfile +0 -0
- data/Gemfile.lock +0 -0
- data/LICENSE.md +0 -0
- data/README.md +22 -8
- data/Rakefile +0 -0
- data/capistrano-deploy-recipes.gemspec +1 -1
- data/lib/recipes.rb +26 -3
- data/lib/recipes/nginx.rb +53 -0
- data/lib/recipes/nodejs.rb +26 -0
- data/lib/recipes/postgres.rb +34 -0
- data/lib/recipes/ruby.rb +53 -0
- data/lib/recipes/unicorn.rb +30 -0
- data/lib/sshkit_extensions.rb +11 -0
- data/lib/templates/nginx_unicorn.erb +23 -0
- data/lib/templates/unicorn.rb.erb +31 -0
- data/lib/{recipes/.gitkeep → templates/unicorn_init.erb} +0 -0
- metadata +19 -12
- data/lib/templates/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YzNlMjc1MGE5N2Y1ZmVmZjhjYjY5Yjk5MzhkOTc2NzFmYjkzYzVkMg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 78ae7e3370518c1e4b97ed60c9599c0ec75dbdb9
|
4
|
+
data.tar.gz: ed8d9c11c2b0683075fe932e1cd9c70e36d5e370
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
N2YzZjVhOThjNzRlZTZlOTAyZWM0NjQ3NzJlYTJiZjZmMjE5ZTgzYjU4NmYx
|
11
|
-
MGIwY2ViNGQxMzAzMzNjMmU0NjZmZGZlZDkyY2FiYTYxM2ViYjA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YTdjZDdlYTRiMDFiMzlkOTEzOGU4MTQxZjBkOThkYzU0YTc0MDczOGM3NWVm
|
14
|
-
YWYxYTk1NjVkZGQyNWQ4NmRmMTBhYzVlODIzZDg0Yzk0NzIxNjk4ZTk3MTM2
|
15
|
-
NWE2ZTlkYWM1NTMzMzQyOTQ0NTBmZjc0OTkyNDM0ZmZkYjJiMGQ=
|
6
|
+
metadata.gz: c52932e34d17c1ced74939fa31256b44ada1f0017a38ef4712c7ee7ad1359602769696324eeecb74f141d98117a6617365e55713d0cc64feed4eee7511fbcf40
|
7
|
+
data.tar.gz: d53667cc49576763e412091e1e508f67186d21a98f248df5d2ef3a294229ab4d14d79e75803023c949be2d7534d1d26b94dfab8ac9a4eaf60d70eae71ac73d3c
|
data/.gitignore
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/Gemfile.lock
CHANGED
File without changes
|
data/LICENSE.md
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
> NOTICE: we are on the early stages.
|
1
|
+
> NOTICE: we are on the early stages. ;)
|
2
2
|
|
3
3
|
# Capistrano Deploy Recipes
|
4
4
|
|
5
|
-
Just a bunch of
|
5
|
+
Just a bunch of useful Capistrano V3 deploy recipes.
|
6
6
|
|
7
7
|
## The need
|
8
8
|
|
@@ -11,14 +11,14 @@ and we would be so happy if all the dependencies (ruby, unicorn, nginx,
|
|
11
11
|
postgres and so on) get installed by Capistrano.
|
12
12
|
|
13
13
|
To make the stack deploy easier we can use a base image for the machines
|
14
|
-
(which, by the way, we do have) or use tools like [Puppet][0] and [
|
14
|
+
(which, by the way, we do have) or use tools like [Puppet][0] and [Chef][1]
|
15
15
|
or services like [configr][2]. Those options are great and will fit for
|
16
16
|
many situations, but (there is always a but)...
|
17
17
|
|
18
18
|
But sometimes wouldn't it be lovely if a simple `cap production deploy`
|
19
19
|
solve it all?
|
20
20
|
|
21
|
-
|
21
|
+
Watching [RailsCast episode 337][3], Ryan Bates showed a simple way
|
22
22
|
to achieve that.
|
23
23
|
|
24
24
|
Googling around we found some gems that seems to do that, but they dont
|
@@ -39,17 +39,31 @@ Add on your `Capfile` file the recipes you want to use
|
|
39
39
|
|
40
40
|
```ruby
|
41
41
|
require 'recipes/ruby'
|
42
|
+
require 'recipes/nodejs'
|
42
43
|
require 'recipes/nginx'
|
43
|
-
require 'recipes/unicorn'
|
44
44
|
require 'recipes/postgres'
|
45
45
|
```
|
46
46
|
|
47
47
|
> Those requires must go inside `Capfile` and not on `deploy.rb`
|
48
48
|
|
49
|
-
|
49
|
+
Then on the shell just call
|
50
50
|
|
51
|
+
```bash
|
52
|
+
cap production recipes:install recipes:setup
|
51
53
|
```
|
52
|
-
|
54
|
+
|
55
|
+
It will install all the selected packages and then run extra configurations when needed on the setup phase.
|
56
|
+
|
57
|
+
You can also see and invoke just the tasks you want using `cap -T`.
|
58
|
+
|
59
|
+
Some tasks have also other features like `nginx` which have this options:
|
60
|
+
|
61
|
+
```
|
62
|
+
cap nginx:install # Install the latest stable release of nginx
|
63
|
+
cap nginx:restart # Restart nginx
|
64
|
+
cap nginx:setup # Setup nginx configuration for this application
|
65
|
+
cap nginx:start # Start nginx
|
66
|
+
cap nginx:stop # Stop nginx
|
53
67
|
```
|
54
68
|
|
55
69
|
## Contributing
|
@@ -80,7 +94,7 @@ included in all copies or substantial portions of the Software.
|
|
80
94
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
81
95
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
82
96
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
83
|
-
|
97
|
+
NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
84
98
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
85
99
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
86
100
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
CHANGED
File without changes
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "capistrano-deploy-recipes"
|
7
|
-
gem.version = '0.1.
|
7
|
+
gem.version = '0.1.5'
|
8
8
|
gem.authors = ["Adilson Carvalho"]
|
9
9
|
gem.email = ["lc.adilson@gmail.com"]
|
10
10
|
gem.description = %q{Capistrano fullstack deploy recipes}
|
data/lib/recipes.rb
CHANGED
@@ -1,6 +1,29 @@
|
|
1
|
+
require 'sshkit_extensions'
|
2
|
+
|
1
3
|
namespace :recipes do
|
2
|
-
desc "
|
3
|
-
task :
|
4
|
-
|
4
|
+
desc "Install selected recipes on remote server"
|
5
|
+
task :install do
|
6
|
+
on roles(:all) do
|
7
|
+
as :root do
|
8
|
+
aptitude :update
|
9
|
+
aptitude %w{
|
10
|
+
software-properties-common python-software-properties curl wget git
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
5
14
|
end
|
15
|
+
|
16
|
+
desc "Setup selected recipes on remote server"
|
17
|
+
task :setup do
|
18
|
+
# no actual action happens here
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def needs_implementation
|
23
|
+
puts "Needs to be implemented +_+"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Keeps only a..zA..Z0..9_
|
27
|
+
def application
|
28
|
+
@application ||= fetch(:application).gsub(/\W/,'')
|
6
29
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'recipes'
|
2
|
+
|
3
|
+
namespace :nginx do
|
4
|
+
|
5
|
+
desc "Install the latest stable release of nginx"
|
6
|
+
task :install do
|
7
|
+
on roles(:web) do
|
8
|
+
as :root do
|
9
|
+
aptitude %w{install -y nginx}
|
10
|
+
execute 'update-rc.d', %w{nginx defaults}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
after "recipes:install", "nginx:install"
|
15
|
+
|
16
|
+
desc "Setup nginx configuration for this application"
|
17
|
+
task :setup do
|
18
|
+
temp_file = "#{fetch :tmp_dir}/#{fetch :application}"
|
19
|
+
sites_available = "/etc/nginx/sites-available/#{fetch :application}"
|
20
|
+
sites_enabled = "/etc/nginx/sites-enabled/#{fetch :application}"
|
21
|
+
|
22
|
+
on roles(:web) do
|
23
|
+
as :root do
|
24
|
+
erb = File.read(File.expand_path("../../templates/nginx_unicorn.erb", __FILE__))
|
25
|
+
upload! StringIO.new(ERB.new(erb).result(binding)), temp_file
|
26
|
+
execute :chown, 'root:', temp_file
|
27
|
+
execute :chmod, 'a+r', temp_file
|
28
|
+
execute :mv, temp_file, sites_available
|
29
|
+
|
30
|
+
# link creation from sites-available ~> sites-enabled
|
31
|
+
if test("[ -f #{sites_enabled} ]")
|
32
|
+
execute :rm, sites_enabled
|
33
|
+
end
|
34
|
+
execute :ln, '--symbolic', sites_available, sites_enabled
|
35
|
+
|
36
|
+
info "Generated nginx site configuration at /etc/nginx/sites-available/#{fetch(:application)}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
after "recipes:setup", "nginx:setup"
|
41
|
+
|
42
|
+
%w{start stop restart}.each do |command|
|
43
|
+
desc "#{command.capitalize} nginx"
|
44
|
+
task command do
|
45
|
+
on roles(:web) do
|
46
|
+
as :root do
|
47
|
+
service 'nginx', command
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'recipes'
|
2
|
+
|
3
|
+
namespace :nodejs do
|
4
|
+
|
5
|
+
desc "Install the latest stable version of NodeJS"
|
6
|
+
task :install do
|
7
|
+
on roles(:app) do
|
8
|
+
as :root do
|
9
|
+
# dependencies
|
10
|
+
aptitude %w{
|
11
|
+
install -y software-properties-common
|
12
|
+
python-software-properties python g++ make
|
13
|
+
}
|
14
|
+
|
15
|
+
# adding repo with the latest stable version
|
16
|
+
execute 'add-apt-repository', 'ppa:chris-lea/node.js'
|
17
|
+
aptitude :update
|
18
|
+
|
19
|
+
# installing nodejs
|
20
|
+
aptitude %w{ install -y nodejs }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
after "recipes:install", "nodejs:install"
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'recipes'
|
2
|
+
|
3
|
+
namespace :postgres do
|
4
|
+
|
5
|
+
desc "Install the latest stable release of postgres"
|
6
|
+
task :install do
|
7
|
+
on roles(:db), only: { primary: true } do
|
8
|
+
as :root do
|
9
|
+
execute 'add-apt-repository', 'ppa:pitti/postgresql'
|
10
|
+
aptitude %w{ -y update }
|
11
|
+
aptitude %w{ -y install postgresql-9.3 postgresql-contrib-9.3 postgresql-client-9.3 libpq-dev postgresql-server-dev-9.3 }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
after "recipes:install", "postgres:install"
|
16
|
+
|
17
|
+
desc "Setup postgres configuration for this application"
|
18
|
+
task :setup do
|
19
|
+
needs_implementation
|
20
|
+
end
|
21
|
+
after "recipes:setup", "postgres:setup"
|
22
|
+
|
23
|
+
%w{start stop restart status}.each do |command|
|
24
|
+
desc "#{command.capitalize} postgres"
|
25
|
+
task command do
|
26
|
+
on roles(:db) do
|
27
|
+
as :root do
|
28
|
+
service 'postgresql', command
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/lib/recipes/ruby.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'recipes'
|
2
|
+
|
3
|
+
set :ruby_version, '2.1.1'
|
4
|
+
|
5
|
+
namespace :ruby do
|
6
|
+
|
7
|
+
desc "Installs ruby #{fetch :ruby_version}"
|
8
|
+
task :install do
|
9
|
+
on roles(:app, :web) do
|
10
|
+
as :root do
|
11
|
+
# update de package manager
|
12
|
+
aptitude :update
|
13
|
+
|
14
|
+
# installation task dependencies
|
15
|
+
aptitude %w{ install -y wget }
|
16
|
+
|
17
|
+
# ruby dependencies
|
18
|
+
aptitude %w{
|
19
|
+
install -y build-essential openssl libreadline6 libreadline6-dev
|
20
|
+
zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt1-dev
|
21
|
+
autoconf libc6-dev libncurses5-dev automake libtool bison libffi-dev
|
22
|
+
imagemagick
|
23
|
+
}
|
24
|
+
|
25
|
+
# acquiring ruby
|
26
|
+
within '/tmp' do
|
27
|
+
ruby_major = fetch(:ruby_version).scan(/^\d+\.\d+/).first
|
28
|
+
ruby_version = "ruby-#{fetch :ruby_version}"
|
29
|
+
|
30
|
+
execute :wget, %W{ --quiet http://cache.ruby-lang.org/pub/ruby/#{ruby_major}/#{ruby_version}.tar.gz }
|
31
|
+
execute :tar, 'xf', "#{ruby_version}.tar.gz"
|
32
|
+
|
33
|
+
# building and installing it
|
34
|
+
within ruby_version do
|
35
|
+
execute './configure'
|
36
|
+
execute :make
|
37
|
+
execute :make, 'install'
|
38
|
+
end
|
39
|
+
|
40
|
+
# updating rubygems
|
41
|
+
execute :gem, %w{ update --system }
|
42
|
+
|
43
|
+
# removing temporary files
|
44
|
+
execute :rm, '-rf', ruby_version, "#{ruby_version}.tar.gz"
|
45
|
+
|
46
|
+
info "#{ruby_version.capitalize} installed successfuly"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
after "recipes:install", "ruby:install"
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'recipes'
|
2
|
+
|
3
|
+
set :unicorn_name, nil
|
4
|
+
set :unicorn_worker_processes, 2
|
5
|
+
|
6
|
+
def unicorn_name
|
7
|
+
fetch(:unicorn_name) || [:unicorn, application].join('_')
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :unicorn do
|
11
|
+
desc "Install the latest stable release of unicorn"
|
12
|
+
task :install do
|
13
|
+
needs_implemetation
|
14
|
+
end
|
15
|
+
after "recipes:install", "unicorn:install"
|
16
|
+
|
17
|
+
desc "Setup unicorn configuration for this application"
|
18
|
+
task :setup do
|
19
|
+
needs_implementation
|
20
|
+
end
|
21
|
+
after "recipes:setup", "unicorn:setup"
|
22
|
+
|
23
|
+
%w{start stop restart}.each do |command|
|
24
|
+
desc "#{command.capitalize} unicorn"
|
25
|
+
task status do
|
26
|
+
needs_implementation
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
upstream unicorn_<%= application %>_server {
|
2
|
+
server unix:/tmp/unicorn.<%= application %>.sock fail_timeout=30;
|
3
|
+
}
|
4
|
+
|
5
|
+
server {
|
6
|
+
server_name paysagesunrise.com.br www.paysagesunrise.com.br;
|
7
|
+
listen 80 default_server;
|
8
|
+
|
9
|
+
access_log <%= shared_path %>/access.log;
|
10
|
+
error_log <%= shared_path %>/error.log;
|
11
|
+
|
12
|
+
root <%= current_path %>/public;
|
13
|
+
|
14
|
+
try_files $uri/index.html $uri.html $uri @app;
|
15
|
+
|
16
|
+
location @app {
|
17
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
18
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
19
|
+
proxy_set_header Host $http_host;
|
20
|
+
proxy_redirect off;
|
21
|
+
proxy_pass http://unicorn_<%= application %>_server;
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
rails_env = ENV['RAILS_ENV'] || Dir.pwd.scan(/\/(production|homologation)\//).flatten.first || 'production'
|
4
|
+
|
5
|
+
worker_processes <%= fetch :unicorn_worker_processes %>
|
6
|
+
working_directory '<%= current_path %>'
|
7
|
+
listen '<%= "/tmp/unicorn.<%= application %>.sock" %>', :backlog => 64
|
8
|
+
timeout 30
|
9
|
+
|
10
|
+
FileUtils.mkdir_p '<%= shared_path %>/pids'
|
11
|
+
FileUtils.mkdir_p '<%= shared_path %>/log'
|
12
|
+
|
13
|
+
pid '<%= shared_path %>/pids/unicorn.pid'
|
14
|
+
stderr_path '<%= shared_path %>/log/unicorn.stderr.log'
|
15
|
+
stdout_path '<%= shared_path %>/log/unicorn.stdout.log'
|
16
|
+
|
17
|
+
preload_app true
|
18
|
+
GC.respond_to?(:copy_on_write_friendly=) and
|
19
|
+
GC.copy_on_write_friendly = true
|
20
|
+
|
21
|
+
check_client_connection false
|
22
|
+
|
23
|
+
before_fork do |server, worker|
|
24
|
+
defined?(ActiveRecord::Base) and
|
25
|
+
ActiveRecord::Base.connection.disconnect!
|
26
|
+
end
|
27
|
+
|
28
|
+
after_fork do |server, worker|
|
29
|
+
defined?(ActiveRecord::Base) and
|
30
|
+
ActiveRecord::Base.establish_connection
|
31
|
+
end
|
File without changes
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-deploy-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adilson Carvalho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: capistrano-bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.1'
|
41
41
|
description: Capistrano fullstack deploy recipes
|
@@ -45,7 +45,7 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
- .gitignore
|
48
|
+
- ".gitignore"
|
49
49
|
- Gemfile
|
50
50
|
- Gemfile.lock
|
51
51
|
- LICENSE.md
|
@@ -53,8 +53,15 @@ files:
|
|
53
53
|
- Rakefile
|
54
54
|
- capistrano-deploy-recipes.gemspec
|
55
55
|
- lib/recipes.rb
|
56
|
-
- lib/recipes
|
57
|
-
- lib/
|
56
|
+
- lib/recipes/nginx.rb
|
57
|
+
- lib/recipes/nodejs.rb
|
58
|
+
- lib/recipes/postgres.rb
|
59
|
+
- lib/recipes/ruby.rb
|
60
|
+
- lib/recipes/unicorn.rb
|
61
|
+
- lib/sshkit_extensions.rb
|
62
|
+
- lib/templates/nginx_unicorn.erb
|
63
|
+
- lib/templates/unicorn.rb.erb
|
64
|
+
- lib/templates/unicorn_init.erb
|
58
65
|
homepage: https://github.com/mcorp/capistrano-deploy-recipes
|
59
66
|
licenses: []
|
60
67
|
metadata: {}
|
@@ -64,17 +71,17 @@ require_paths:
|
|
64
71
|
- lib
|
65
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|
66
73
|
requirements:
|
67
|
-
- -
|
74
|
+
- - ">="
|
68
75
|
- !ruby/object:Gem::Version
|
69
76
|
version: '0'
|
70
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
78
|
requirements:
|
72
|
-
- -
|
79
|
+
- - ">="
|
73
80
|
- !ruby/object:Gem::Version
|
74
81
|
version: '0'
|
75
82
|
requirements: []
|
76
83
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.2.
|
84
|
+
rubygems_version: 2.2.2
|
78
85
|
signing_key:
|
79
86
|
specification_version: 4
|
80
87
|
summary: Capistrano fullstack deploy recipes
|
data/lib/templates/.gitkeep
DELETED
File without changes
|