rob_cap_recipes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d3ace8b50d18face345ca37e56a01a060cb070b1
4
+ data.tar.gz: ad4ed3ce98b69c3d1f4b4a994e24ab67673380ea
5
+ SHA512:
6
+ metadata.gz: a7af5c447a653826642881ac2e65cabf288e60de8ae535dcedfe7584d88658b7461107cd0d815104b90920055ece4644c55a44f8829a2eb1ee63111fe50e4753
7
+ data.tar.gz: 6f064d18efd01161b852a776fa2cbee290f16618f09704a5d387225150e82057db7044eda4162322c5f3f321c75628834c16dfa6cab0a18b47b6ae5662612420
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in cap_recipes.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Robin Stridsberg
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # CapRecipes
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rob_cap_recipes'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rob_cap_recipes
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,3 @@
1
+ require 'rob_cap_recipes/version'
2
+ require 'rob_cap_recipes/railtie' if defined?(Rails)
3
+
@@ -0,0 +1,7 @@
1
+ module CapRecipes
2
+ class Railtie < Rails::Railtie
3
+ rake_tasks do
4
+ Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f }
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require "rob_cap_recipes/recipes/base"
2
+ require "rob_cap_recipes/recipes/nginx"
3
+ require "rob_cap_recipes/recipes/unicorn"
4
+ require "rob_cap_recipes/recipes/nodejs"
5
+ require "rob_cap_recipes/recipes/rbenv"
6
+ require "rob_cap_recipes/recipes/check"
7
+ require 'rob_cap_recipes/recipes/mysql'
@@ -0,0 +1,32 @@
1
+ require 'rob_cap_recipes/recipes/common'
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ default_run_options[:pty] = true
5
+
6
+ _cset :stages, ["staging", "production"]
7
+ _cset :default_stage, "staging"
8
+
9
+ _cset(:application) { abort "pleas specify the name of youre application: set :application, 'AppName' " }
10
+
11
+ _cset :deploy_via, :remote_cache
12
+
13
+ _cset :scm, :git
14
+ set(:repository) { "git@gitlab.stridsberg.nu:ruby_#{application.downcase}.git" }
15
+ _cset :branch, "master"
16
+
17
+
18
+ _cset :use_sudo, false
19
+ _cset :keep_releases, 5
20
+
21
+
22
+ namespace :deploy do
23
+ task :install do
24
+ run "#{sudo} apt-get update -y"
25
+ run "#{sudo} apt-get install python-software-properties -y"
26
+ end
27
+ end
28
+
29
+ after "deploy:update", "deploy:cleanup"
30
+ after "deploy", "deploy:migrate"
31
+
32
+ end
@@ -0,0 +1,15 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ namespace :check do
3
+ desc "Make sure local git is in sync with remote."
4
+ task :revision, roles: :web do
5
+ unless `git rev-parse HEAD` == `git rev-parse origin/#{branch}`
6
+ puts "WARNING: HEAD is not the same as origin/#{branch}"
7
+ puts "Run `git push` to sync changes."
8
+ exit
9
+ end
10
+ end
11
+ before "deploy", "check:revision"
12
+ before "deploy:migrations", "check:revision"
13
+ before "deploy:cold", "check:revision"
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ def template(from, to)
2
+ erb = File.read(File.expand_path("../templates/#{from}", __FILE__))
3
+ put ERB.new(erb).result(binding), to
4
+ end
5
+
6
+ def _cset(name, *args, &block)
7
+ set(name, *args, &block) unless exists?(name)
8
+ end
9
+
10
+ def add_apt_repository(repo)
11
+ run "#{sudo} add-apt-repository #{repo}", :pty => true do |ch, stream, data|
12
+ if data =~ /\[ENTER\]/
13
+ ch.send_data("\n")
14
+ else
15
+ Capistrano::Configuration.default_io_proc.call(ch, stream, data)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+
3
+ _cset(:mysql_host, "saga.stridsberg.nu")
4
+ _cset(:mysql_user) { Capistrano::CLI.ui.ask( "MySql user: ") }
5
+ _cset(:mysql_password) { Capistrano::CLI.ui.ask( "MySql password: ") }
6
+
7
+ namespace :mysql do
8
+
9
+ task :install, roles: :db, only: {primary: true} do
10
+ run "#{sudo} apt-get update -y"
11
+ run "#{sudo} apt-get install -y mysql-server libmysql-ruby libmysqlclient-dev"
12
+ end
13
+ after "deploy:install", "mysql:install"
14
+
15
+ task :setup, roles: :app do
16
+ run "mkdir -p #{shared_path}/config"
17
+ unless File.exist?("#{shared_path}/config/database.yml")
18
+ template "mysql.yml.erb", "#{shared_path}/config/database.yml"
19
+ end
20
+ end
21
+ after "deploy:setup", "mysql:setup"
22
+
23
+
24
+ desc "Symlink the database.yml file into latest release"
25
+ task :symlink, roles: :app do
26
+ run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
27
+ end
28
+ after "deploy:finalize_update", "mysql:symlink"
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ namespace :nginx do
3
+ desc "Install latest stable release of nginx"
4
+
5
+ task :install, roles: :web do
6
+ add_apt_repository 'ppa:nginx/stable'
7
+ run "#{sudo} apt-get -y update"
8
+ run "#{sudo} apt-get -y install nginx"
9
+ end
10
+ after "deploy:install", "nginx:install"
11
+
12
+ desc "Setup nginx configuration for this application"
13
+ task :setup, roles: :web do
14
+ template "nginx_unicorn.erb", "/tmp/nginx_conf"
15
+ run "#{sudo} mv /tmp/nginx_conf /etc/nginx/sites-enabled/#{application}"
16
+ restart
17
+ end
18
+ after "deploy:setup", "nginx:setup"
19
+
20
+ %w[start stop restart].each do |command|
21
+ desc "#{command} nginx"
22
+ task command, roles: :web do
23
+ run "#{sudo} service nginx #{command}"
24
+ end
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,11 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ namespace :nodejs do
3
+ desc "Install the latest relase of Node.js"
4
+ task :install, roles: :app do
5
+ add_apt_repository 'ppa:chris-lea/node.js'
6
+ run "#{sudo} apt-get -y update"
7
+ run "#{sudo} apt-get -y install nodejs"
8
+ end
9
+ after "deploy:install", "nodejs:install"
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+
3
+ _cset :ruby_version, "1.9.3-p429"
4
+ _cset :rbenv_bootstrap, "bootstrap-ubuntu-12-04"
5
+
6
+
7
+ namespace :rbenv do
8
+ desc "Install rbenv, Ruby, and the Bundler gem"
9
+ task :install, roles: :app do
10
+ run "#{sudo} apt-get -y install curl git-core"
11
+ run "curl -L https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash"
12
+ bashrc = <<-BASHRC
13
+ if [ -d $HOME/.rbenv ]; then
14
+ export PATH="$HOME/.rbenv/bin:$PATH"
15
+ eval "$(rbenv init -)"
16
+ fi
17
+ BASHRC
18
+ put bashrc, "/tmp/rbenvrc"
19
+ run "cat /tmp/rbenvrc ~/.bashrc > ~/.bashrc.tmp"
20
+ run "mv ~/.bashrc.tmp ~/.bashrc"
21
+ run %q{export PATH="$HOME/.rbenv/bin:$PATH"}
22
+ run %q{eval "$(rbenv init -)"}
23
+ rbenv "#{rbenv_bootstrap}"
24
+ rbenv "install #{ruby_version}"
25
+ rbenv "global #{ruby_version}"
26
+ run "gem install bundler --no-ri --no-rdoc"
27
+ run "rbenv rehash"
28
+ end
29
+ after "deploy:install", "rbenv:install"
30
+ end
31
+
32
+ def rbenv(command)
33
+ # possible override flag if a exception is raised
34
+ success = false
35
+ begin
36
+ run "rbenv #{command}", :pty => true do |ch, stream, data|
37
+ if data =~ /\[sudo\].password.for/
38
+ ch.send_data("#{password}\n")
39
+ elsif data =~ /\install/
40
+ success = true
41
+ ch.send_data("n\n")
42
+ else
43
+ Capistrano::Configuration.default_io_proc.call(ch, stream, data)
44
+ end
45
+ end
46
+ rescue
47
+ raise unless success
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,29 @@
1
+ development:
2
+ adapter: mysql2
3
+ encoding: utf8
4
+ reconnect: false
5
+ database: <%= application %>_development
6
+ pool: 5
7
+ username: <%= mysql_user %>
8
+ password: <%= mysql_password %>
9
+ socket: /var/run/mysqld/mysqld.sock
10
+
11
+ test:
12
+ adapter: mysql2
13
+ encoding: utf8
14
+ reconnect: false
15
+ database: <%= application %>_test
16
+ pool: 5
17
+ username: <%= mysql_user %>
18
+ password: <%= mysql_password %>
19
+ socket: /var/run/mysqld/mysqld.sock
20
+
21
+ production:
22
+ adapter: mysql2
23
+ encoding: utf8
24
+ reconnect: false
25
+ database: <%= application %>_production
26
+ pool: 5
27
+ username: <%= mysql_user %>
28
+ password: <%= mysql_password %>
29
+ host: <%= mysql_host %>
@@ -0,0 +1,28 @@
1
+ upstream unicorn.<% host_header %> {
2
+ server unix:/tmp/unicorn.<%= application %>.sock fail_timeout=0;
3
+ }
4
+
5
+ server {
6
+ listen <%= host_header %>:80;
7
+ server_name <%= host_header %>;
8
+ root <%= current_path %>/public;
9
+
10
+ location ^~ /assets/ {
11
+ gzip_static on;
12
+ expires max;
13
+ add_header Cache-Control public;
14
+ }
15
+
16
+ try_files $uri/index.html $uri @unicorn;
17
+ location @unicorn {
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.<%host_header %>;
22
+ }
23
+
24
+ error_page 500 502 503 504 /500.html;
25
+ client_max_body_size 4G;
26
+ keepalive_timeout 10;
27
+ }
28
+
@@ -0,0 +1,9 @@
1
+ working_directory "<%= current_path %>"
2
+ pid "<%= unicorn_pid %>"
3
+ stderr_path "<%= unicorn_log %>"
4
+ stdout_path "<%= unicorn_log %>"
5
+
6
+ listen "/tmp/unicorn.<%= application %>.sock"
7
+ worker_processes <%= unicorn_workers %>
8
+ timeout 30
9
+
@@ -0,0 +1,85 @@
1
+ #!/bin/sh
2
+ ### BEGIN INIT INFO
3
+ # Provides: unicorn
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: Manage unicorn server
9
+ # Description: Start, stop, restart unicorn server for a specific application.
10
+ ### END INIT INFO
11
+ set -e
12
+
13
+ # Feel free to change any of the following variables for your app:
14
+ TIMEOUT=${TIMEOUT-60}
15
+ APP_ROOT=<%= current_path %>
16
+ PID=<%= unicorn_pid %>
17
+ CMD="cd <%= current_path %>; bundle exec unicorn -D -c <%= unicorn_config %> -E <%= rails_env %>"
18
+ AS_USER=<%= unicorn_user %>
19
+ set -u
20
+
21
+ OLD_PIN="$PID.oldbin"
22
+
23
+ sig () {
24
+ test -s "$PID" && kill -$1 `cat $PID`
25
+ }
26
+
27
+ oldsig () {
28
+ test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
29
+ }
30
+
31
+ run () {
32
+ if [ "$(id -un)" = "$AS_USER" ]; then
33
+ eval $1
34
+ else
35
+ su -c "$1" - $AS_USER
36
+ fi
37
+ }
38
+
39
+ case "$1" in
40
+ start)
41
+ sig 0 && echo >&2 "Already running" && exit 0
42
+ run "$CMD"
43
+ ;;
44
+ stop)
45
+ sig QUIT && exit 0
46
+ echo >&2 "Not running"
47
+ ;;
48
+ force-stop)
49
+ sig TERM && exit 0
50
+ echo >&2 "Not running"
51
+ ;;
52
+ restart|reload)
53
+ sig HUP && echo reloaded OK && exit 0
54
+ echo >&2 "Couldn't reload, starting '$CMD' instead"
55
+ run "$CMD"
56
+ ;;
57
+ upgrade)
58
+ if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
59
+ then
60
+ n=$TIMEOUT
61
+ while test -s $OLD_PIN && test $n -ge 0
62
+ do
63
+ printf '.' && sleep 1 && n=$(( $n - 1 ))
64
+ done
65
+ echo
66
+
67
+ if test $n -lt 0 && test -s $OLD_PIN
68
+ then
69
+ echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
70
+ exit 1
71
+ fi
72
+ exit 0
73
+ fi
74
+ echo >&2 "Couldn't upgrade, starting '$CMD' instead"
75
+ run "$CMD"
76
+ ;;
77
+ reopen-logs)
78
+ sig USR1
79
+ ;;
80
+ *)
81
+ echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
82
+ exit 1
83
+ ;;
84
+ esac
85
+
@@ -0,0 +1,28 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ _cset(:unicorn_user) { user }
3
+ _cset(:unicorn_pid) { "#{current_path}/tmp/pids/unicorn.pid" }
4
+ _cset(:unicorn_config) { "#{shared_path}/config/unicorn.rb" }
5
+ _cset(:unicorn_log) { "#{shared_path}/log/unicorn.log" }
6
+ _cset(:unicorn_workers, 2)
7
+
8
+ namespace :unicorn do
9
+ desc "Setup Unicorn initializer and app configuration"
10
+ task :setup, roles: :app do
11
+ run "mkdir -p #{shared_path}/config"
12
+ template "unicorn.rb.erb", unicorn_config
13
+ template "unicorn_init.erb", "/tmp/unicorn_init"
14
+ run "chmod +x /tmp/unicorn_init"
15
+ run "#{sudo} mv /tmp/unicorn_init /etc/init.d/unicorn_#{application}"
16
+ run "#{sudo} update-rc.d -f unicorn_#{application} defaults"
17
+ end
18
+ after "deploy:setup", "unicorn:setup"
19
+
20
+ %w[start stop restart].each do |command|
21
+ desc "#{command} unicorn"
22
+ task command, roles: :app do
23
+ run "service unicorn_#{application} #{command}"
24
+ end
25
+ after "deploy:#{command}", "unicorn:#{command}"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ namespace :db do
2
+ desc "generates a startin database.yml frome capistrano recipe template"
3
+ task :yml => :environment do
4
+ unless File.exist?(File.expand_path("#{Rails.root}/config/database.yml", __FILE__))
5
+ application = Rails.application.class.parent_name
6
+ mysql_user = Rails.application.class.parent_name
7
+ mysql_password = Rails.application.class.parent_name
8
+ mysql_host = ""
9
+ mysql_database = Rails.application.class.parent_name
10
+
11
+ erb = File.read(File.expand_path("../../../rob_cap_recipes/recipes/templates/mysql.yml.erb", __FILE__))
12
+ yml = ERB.new(erb).result(binding)
13
+
14
+ Fil .open(File.expand_path("#{Rails.root}/config/database.yml", __FILE__), "w") {|f| f.write(yml) }
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,3 @@
1
+ module RobCapRecipes
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rob_cap_recipes/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "rob_cap_recipes"
8
+ gem.version = RobCapRecipes::VERSION
9
+ gem.authors = ["Robin Stridsberg"]
10
+ gem.email = ["robin@stridsberg.nu"]
11
+ gem.description = %q{Adds some recipes to capistrano}
12
+ gem.summary = %q{Adds some recipes to capistrano. Made to fit my own environment}
13
+ gem.homepage = "http://gitlab.stridsberg.nu/cap_recipes"
14
+
15
+ gem.platform = Gem::Platform::RUBY
16
+
17
+ gem.files = `git ls-files`.split($/)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.require_paths = ["lib"]
21
+
22
+ gem.add_dependency 'capistrano', '>=2.0.0'
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rob_cap_recipes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Robin Stridsberg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capistrano
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
27
+ description: Adds some recipes to capistrano
28
+ email:
29
+ - robin@stridsberg.nu
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - LICENSE.txt
37
+ - README.md
38
+ - Rakefile
39
+ - lib/rob_cap_recipes.rb
40
+ - lib/rob_cap_recipes/railtie.rb
41
+ - lib/rob_cap_recipes/recipes.rb
42
+ - lib/rob_cap_recipes/recipes/base.rb
43
+ - lib/rob_cap_recipes/recipes/check.rb
44
+ - lib/rob_cap_recipes/recipes/common.rb
45
+ - lib/rob_cap_recipes/recipes/mysql.rb
46
+ - lib/rob_cap_recipes/recipes/nginx.rb
47
+ - lib/rob_cap_recipes/recipes/nodejs.rb
48
+ - lib/rob_cap_recipes/recipes/rbenv.rb
49
+ - lib/rob_cap_recipes/recipes/templates/mysql.yml.erb
50
+ - lib/rob_cap_recipes/recipes/templates/nginx_unicorn.erb
51
+ - lib/rob_cap_recipes/recipes/templates/unicorn.rb.erb
52
+ - lib/rob_cap_recipes/recipes/templates/unicorn_init.erb
53
+ - lib/rob_cap_recipes/recipes/unicorn.rb
54
+ - lib/rob_cap_recipes/tasks/db.rake
55
+ - lib/rob_cap_recipes/version.rb
56
+ - rob_cap_recipes.gemspec
57
+ homepage: http://gitlab.stridsberg.nu/cap_recipes
58
+ licenses: []
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.0.3
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Adds some recipes to capistrano. Made to fit my own environment
80
+ test_files: []