rob_cap_recipes 0.0.4.alpha2 → 0.0.5.alpha1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65eb330d3f040d0b67841940aa0147b5f7b2d486
4
- data.tar.gz: 8003531da1de7b140f107324461ae8349af61eb7
3
+ metadata.gz: 0671a3f566bf32275c92e7fe55a996e991b8ec69
4
+ data.tar.gz: 645b61171af673fb9d40f25cacf04b8aff1592db
5
5
  SHA512:
6
- metadata.gz: b6a6252e9e8ab9d2fcd8b45a7bd13e92173752a5a742dc391b17b1c2f392c28f28355f4e4aa28900e96653ae8e16ed41bef255f119388a78b3a8a7b852ac778c
7
- data.tar.gz: 4b3773958631075b76936067aca899e509ee81c2963583f86deeb24ee99da06a9408442d8ca234ba2c67bc852ad497a114e5a8a471789db9a6624cf8fa4ea962
6
+ metadata.gz: 570cba97c7f7840e03a11898f307b0742b255c0c1b66ba2f12a6c46908fd459ca92ea43d43af96a10bd6cd6b41408cab789c0f544be338dcdef9f2d231aa1a87
7
+ data.tar.gz: be8b68673e39e9020616fcb4aac276d02c4ef43bdbe556ff5ad0f26a82f4343ac665bcf6c50d270fa5563e8052816262f1fd0439646cc2d47c817ea1c85b7a15
@@ -0,0 +1,25 @@
1
+ require 'rob_cap_recipes/recipes/common'
2
+
3
+ unless fetch(:application)
4
+ abort "pleas specify the name of youre application: set :application, 'AppName'"
5
+ end
6
+
7
+ set :scm, :git
8
+ set :repo_url, "git@gitlab.stridsberg.nu:ruby_#{fetch(:application).downcase}.git"
9
+ set :branch, 'master'
10
+
11
+ set :use_sudo, false
12
+ set :keep_releases, 5
13
+
14
+ namespace :deploy do
15
+ task :install do
16
+ on roles( :all ) do
17
+ sudo "apt-get update"
18
+ sudo "apt-get install python-software-properties -y"
19
+ end
20
+ end
21
+
22
+ after "deploy", "deploy:migrate"
23
+
24
+ after "deploy:symlink:linked_dirs", "deploy:symlink:release"
25
+ end
@@ -0,0 +1,14 @@
1
+ namespace :check do
2
+ desc "Make sure local git is in sync with remote."
3
+ task :revision do
4
+ on roles( :web) do
5
+ unless `git rev-parse HEAD` == `git rev-parse origin/#{fetch(:branch)}`
6
+ puts "WARNING: HEAD is not the same as origin/#{fetch(:branch)}"
7
+ puts "if you are on another branch use caps deploy -s branch='current_branch'"
8
+ puts "Run `git push` to sync changes."
9
+ exit
10
+ end
11
+ end
12
+ end
13
+ before "deploy", "check:revision"
14
+ end
@@ -1,10 +1,9 @@
1
1
  def template(from, to)
2
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)
3
+ str = StringIO.new(ERB.new(erb).result(binding))
4
+ on roles(:app) do |host|
5
+ upload!(str, to)
6
+ end
8
7
  end
9
8
 
10
9
  def add_apt_repository(repo)
@@ -0,0 +1,29 @@
1
+ namespace :mysql do
2
+ set(:mysql_host, "saga.stridsberg.nu")
3
+
4
+
5
+ set :linked_files, %w{config/database.yml}
6
+
7
+ ask(:mysql_user,"" )
8
+ ask(:mysql_password,"")
9
+
10
+
11
+ task :install do
12
+ on roles(:web) do
13
+ sudo "apt-get update -y"
14
+ sudo "apt-get install -y libmysql-ruby libmysqlclient-dev"
15
+ end
16
+ end
17
+ after "deploy:install", "mysql:install"
18
+
19
+ task :setup do
20
+ on roles( :app ) do
21
+ # execute %{mkdir -pv "#{shared_path}/config"}
22
+ execute :mkdir, '-pv', "#{shared_path}/config"
23
+ unless File.exist?("#{shared_path}/config/database.yml")
24
+ template "mysql.yml.erb", "#{shared_path}/config/database.yml"
25
+ end
26
+ end
27
+ end
28
+ after "mysql:install", "mysql:setup"
29
+ end
@@ -0,0 +1,31 @@
1
+ namespace :nginx do
2
+ desc "Install latest stable release of nginx"
3
+
4
+ task :install do
5
+ on roles(:web) do
6
+ #add_apt_repository 'ppa:nginx/stable'
7
+ sudo "apt-get update"
8
+ sudo "apt-get install nginx -y"
9
+ end
10
+ end
11
+ after "deploy:install", "nginx:install"
12
+
13
+ desc "Setup nginx configuration for this application"
14
+ task :setup do
15
+ on roles(:web) do
16
+ template "nginx.erb", "/tmp/nginx_conf"
17
+ sudo "mv /tmp/nginx_conf /etc/nginx/sites-enabled/#{fetch(:application)}"
18
+ end
19
+ end
20
+ after "nginx:install", "nginx:setup"
21
+
22
+ %w[start stop restart].each do |command|
23
+ desc "#{command} nginx"
24
+ task command do
25
+ on roles( :web) do
26
+ sudo "service nginx #{command}"
27
+ end
28
+ end
29
+ end
30
+ after "nginx:setup", "nginx:restart"
31
+ end
@@ -0,0 +1,11 @@
1
+ namespace :nodejs do
2
+ desc 'Install the latest relase of Node.js'
3
+ task :install do
4
+ on roles( :app) do
5
+ #add_apt_repository 'ppa:chris-lea/node.js'
6
+ sudo "apt-get update"
7
+ sudo "apt-get install nodejs -y"
8
+ end
9
+ end
10
+ after "deploy:install", "nodejs:install"
11
+ end
@@ -0,0 +1,11 @@
1
+ namespace :puma do
2
+ set(:puma_user, fetch(:user) )
3
+ # set :puma_pid, -> { File.join(shared_path, 'tmp', 'pids', 'puma.pid') }
4
+
5
+ task :setup do
6
+ on roles( :app ) do
7
+ execute :mkdir, '-pv', "#{shared_path}/tmp/pids", "#{shared_path}/tmp/sockets", "#{shared_path}/config", "#{shared_path}/log"
8
+ end
9
+ end
10
+ after "deploy:install", "puma:setup"
11
+ end
@@ -0,0 +1,48 @@
1
+ namespace :rbenv do
2
+
3
+ set :ruby_version, "1.9.3-p429"
4
+ set :rbenv_bootstrap, "bootstrap-ubuntu-12-04"
5
+
6
+
7
+ desc "Install rbenv, Ruby, and the Bundler gem"
8
+ task :install, roles: :app do
9
+ run "#{sudo} apt-get -y install curl git-core"
10
+ run "curl -L https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash"
11
+ bashrc = <<-BASHRC
12
+ if [ -d $HOME/.rbenv ]; then
13
+ export PATH="$HOME/.rbenv/bin:$PATH"
14
+ eval "$(rbenv init -)"
15
+ fi
16
+ BASHRC
17
+ put bashrc, "/tmp/rbenvrc"
18
+ run "cat /tmp/rbenvrc ~/.bashrc > ~/.bashrc.tmp"
19
+ run "mv ~/.bashrc.tmp ~/.bashrc"
20
+ run %q{export PATH="$HOME/.rbenv/bin:$PATH"}
21
+ run %q{eval "$(rbenv init -)"}
22
+ rbenv "#{rbenv_bootstrap}"
23
+ rbenv "install #{ruby_version}"
24
+ rbenv "global #{ruby_version}"
25
+ run "gem install bundler --no-ri --no-rdoc"
26
+ run "rbenv rehash"
27
+ end
28
+ after "deploy:install", "rbenv:install"
29
+ end
30
+
31
+ def rbenv(command)
32
+ # possible override flag if a exception is raised
33
+ success = false
34
+ begin
35
+ run "rbenv #{command}", :pty => true do |ch, stream, data|
36
+ if data =~ /\[sudo\].password.for/
37
+ ch.send_data("#{password}\n")
38
+ elsif data =~ /\install/
39
+ success = true
40
+ ch.send_data("n\n")
41
+ else
42
+ Capistrano::Configuration.default_io_proc.call(ch, stream, data)
43
+ end
44
+ end
45
+ rescue
46
+ raise unless success
47
+ end
48
+ end
@@ -2,28 +2,28 @@ development:
2
2
  adapter: mysql2
3
3
  encoding: utf8
4
4
  reconnect: false
5
- database: <%= application %>_development
5
+ database: <%= fetch(:application) %>_development
6
6
  pool: 5
7
- username: <%= mysql_user %>
8
- password: <%= mysql_password %>
9
- socket: /var/run/mysqld/mysqld.sock
7
+ username: <%= fetch(:mysql_user) %>
8
+ password: <%= fetch(:mysql_password) %>
9
+ host: <%= fetch(:mysql_host) %>
10
10
 
11
11
  test:
12
12
  adapter: mysql2
13
13
  encoding: utf8
14
14
  reconnect: false
15
- database: <%= application %>_test
15
+ database: <%= fetch(:application) %>_test
16
16
  pool: 5
17
- username: <%= mysql_user %>
18
- password: <%= mysql_password %>
19
- socket: /var/run/mysqld/mysqld.sock
17
+ username: <%= fetch(:mysql_user) %>
18
+ password: <%= fetch(:mysql_password) %>
19
+ host: <%= fetch(:mysql_host) %>
20
20
 
21
21
  production:
22
22
  adapter: mysql2
23
23
  encoding: utf8
24
24
  reconnect: false
25
- database: <%= application %>_production
25
+ database: <%= fetch(:application) %>_production
26
26
  pool: 5
27
- username: <%= mysql_user %>
28
- password: <%= mysql_password %>
29
- host: <%= mysql_host %>
27
+ username: <%= fetch(:mysql_user) %>
28
+ password: <%= fetch(:mysql_password) %>
29
+ host: <%= fetch(:mysql_host) %>
@@ -1,10 +1,10 @@
1
- upstream nginx.<%= host_header %> {
2
- server <%= "unix://#{puma_socket}" %> fail_timeout=0;
1
+ upstream nginx.<%= fetch(:host_header) %> {
2
+ server <%= fetch(:puma_bind)" %> fail_timeout=0;
3
3
  }
4
4
 
5
5
  server {
6
6
  listen 80;
7
- server_name <%= host_header %>;
7
+ server_name <%= fetch(:host_header) %>;
8
8
  root <%= current_path %>/public;
9
9
 
10
10
  location ^~ /assets/ {
@@ -13,12 +13,12 @@ server {
13
13
  add_header Cache-Control public;
14
14
  }
15
15
 
16
- try_files $uri/index.html $uri @<%= application %>;
17
- location @<%= application %> {
16
+ try_files $uri/index.html $uri @<%= fetch(:application) %>;
17
+ location @<%= fetch(:application) %> {
18
18
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
19
19
  proxy_set_header Host $http_host;
20
20
  proxy_redirect off;
21
- proxy_pass http://nginx.<%=host_header %>;
21
+ proxy_pass http://nginx.<%=fetch(:host_header)%>;
22
22
  }
23
23
 
24
24
  error_page 500 502 503 504 /500.html;
@@ -0,0 +1,26 @@
1
+ namespace :unicorn do
2
+ set (:unicorn_user, fetch(:user))
3
+ set :unicorn_pid, "#{current_path}/tmp/pids/unicorn.pid"
4
+ set :unicorn_config, "#{shared_path}/config/unicorn.rb"
5
+ set :unicorn_log, "#{shared_path}/log/unicorn.log"
6
+ set:unicorn_workers, 2
7
+
8
+ desc "Setup Unicorn initializer and app configuration"
9
+ task :setup, roles: :app do
10
+ run "mkdir -p #{shared_path}/config"
11
+ template "unicorn.rb.erb", unicorn_config
12
+ template "unicorn_init.erb", "/tmp/unicorn_init"
13
+ run "chmod +x /tmp/unicorn_init"
14
+ run "#{sudo} mv /tmp/unicorn_init /etc/init.d/unicorn_#{application}"
15
+ run "#{sudo} update-rc.d -f unicorn_#{application} defaults"
16
+ end
17
+ after "deploy:setup", "unicorn:setup"
18
+
19
+ %w[start stop restart].each do |command|
20
+ desc "#{command} unicorn"
21
+ task command, roles: :app do
22
+ run "service unicorn_#{application} #{command}"
23
+ end
24
+ after "deploy:#{command}", "unicorn:#{command}"
25
+ end
26
+ end
@@ -1,8 +1,16 @@
1
- require "rob_cap_recipes/recipes/base"
2
- require "rob_cap_recipes/recipes/nginx"
3
- require "rob_cap_recipes/recipes/puma"
4
- #require "rob_cap_recipes/recipes/unicorn"
5
- require "rob_cap_recipes/recipes/nodejs"
6
- require "rob_cap_recipes/recipes/rbenv"
7
- require "rob_cap_recipes/recipes/check"
8
- require 'rob_cap_recipes/recipes/mysql'
1
+ #require "rob_cap_recipes/recipes/base"
2
+ #require "rob_cap_recipes/recipes/nginx"
3
+ ##require "rob_cap_recipes/recipes/puma"
4
+ ##require "rob_cap_recipes/recipes/unicorn"
5
+ #require "rob_cap_recipes/recipes/nodejs"
6
+ ##require "rob_cap_recipes/recipes/rbenv"
7
+ #require "rob_cap_recipes/recipes/check"
8
+ #require 'rob_cap_recipes/recipes/mysql'
9
+ load File.expand_path('../recipes/base.cap', __FILE__)
10
+ load File.expand_path('../recipes/nodejs.cap', __FILE__)
11
+ load File.expand_path('../recipes/check.cap', __FILE__)
12
+ load File.expand_path('../recipes/mysql.cap', __FILE__)
13
+ load File.expand_path('../recipes/nginx.cap', __FILE__)
14
+ load File.expand_path('../recipes/puma.cap', __FILE__)
15
+ #load File.expand_path('../recipes/unicorn.cap', __FILE__)
16
+ #load File.expand_path('../recipes/rbenv.cap', __FILE__)
@@ -1,3 +1,3 @@
1
1
  module RobCapRecipes
2
- VERSION = "0.0.4.alpha2"
2
+ VERSION = "0.0.5.alpha1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rob_cap_recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.alpha2
4
+ version: 0.0.5.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Stridsberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-04 00:00:00.000000000 Z
11
+ date: 2013-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -39,14 +39,14 @@ files:
39
39
  - lib/rob_cap_recipes.rb
40
40
  - lib/rob_cap_recipes/railtie.rb
41
41
  - lib/rob_cap_recipes/recipes.rb
42
- - lib/rob_cap_recipes/recipes/base.rb
43
- - lib/rob_cap_recipes/recipes/check.rb
42
+ - lib/rob_cap_recipes/recipes/base.cap
43
+ - lib/rob_cap_recipes/recipes/check.cap
44
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/puma.rb
49
- - lib/rob_cap_recipes/recipes/rbenv.rb
45
+ - lib/rob_cap_recipes/recipes/mysql.cap
46
+ - lib/rob_cap_recipes/recipes/nginx.cap
47
+ - lib/rob_cap_recipes/recipes/nodejs.cap
48
+ - lib/rob_cap_recipes/recipes/puma.cap
49
+ - lib/rob_cap_recipes/recipes/rbenv.cap
50
50
  - lib/rob_cap_recipes/recipes/templates/mysql.yml.erb
51
51
  - lib/rob_cap_recipes/recipes/templates/nginx.erb
52
52
  - lib/rob_cap_recipes/recipes/templates/puma.rb.erb
@@ -54,7 +54,7 @@ files:
54
54
  - lib/rob_cap_recipes/recipes/templates/puma_run.erb
55
55
  - lib/rob_cap_recipes/recipes/templates/unicorn.rb.erb
56
56
  - lib/rob_cap_recipes/recipes/templates/unicorn_init.erb
57
- - lib/rob_cap_recipes/recipes/unicorn.rb
57
+ - lib/rob_cap_recipes/recipes/unicorn.cap
58
58
  - lib/rob_cap_recipes/tasks/db.rake
59
59
  - lib/rob_cap_recipes/version.rb
60
60
  - rob_cap_recipes.gemspec
@@ -1,31 +0,0 @@
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) { `git rev-parse --abbrev-ref HEAD` }
16
-
17
- _cset :use_sudo, false
18
- _cset :keep_releases, 5
19
-
20
-
21
- namespace :deploy do
22
- task :install do
23
- run "#{sudo} apt-get update -y"
24
- run "#{sudo} apt-get install python-software-properties -y"
25
- end
26
- end
27
-
28
- after "deploy:update", "deploy:cleanup"
29
- after "deploy", "deploy:migrate"
30
-
31
- end
@@ -1,16 +0,0 @@
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 "if you are on another branch use caps deploy -s branch='current_branch'"
8
- puts "Run `git push` to sync changes."
9
- exit
10
- end
11
- end
12
- before "deploy", "check:revision"
13
- before "deploy:migrations", "check:revision"
14
- before "deploy:cold", "check:revision"
15
- end
16
- end
@@ -1,30 +0,0 @@
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
@@ -1,28 +0,0 @@
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.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
-
@@ -1,11 +0,0 @@
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
@@ -1,35 +0,0 @@
1
- Capistrano::Configuration.instance(true).load do
2
- _cset(:puma_user){user}
3
- _cset(:puma_pid){ "#{current_path}/tmp/sockets/puma.pid" }
4
- _cset(:puma_state){ "#{current_path}/tmp/sockets/puma.state" }
5
- _cset(:puma_socket){ "#{current_path}/tmp/sockets/puma.sock" }
6
- _cset(:puma_config){ "#{shared_path}/config/puma.rb" }
7
-
8
- namespace :puma_robstr do
9
- desc "Setup Puma initializer and app configuration"
10
- task :setup, roles: :app do
11
- run "mkdir -p #{shared_path}/config"
12
- unless File.exist?(puma_config)
13
- template "puma.rb.erb", puma_config
14
- end
15
- template "puma_init.erb", "/tmp/puma_init"
16
- run "chmod +x /tmp/puma_init"
17
- run "#{sudo} mv /tmp/puma_init /etc/init.d/puma"
18
- run "#{sudo} update-rc.d -f puma defaults"
19
- run "#{sudo} touch /etc/puma.conf"
20
- template "puma_run.erb", "/tmp/run-puma"
21
- run "chmod +x /tmp/run-puma"
22
- run "#{sudo} mv /tmp/run-puma /usr/local/bin/run-puma"
23
- end
24
- after "deploy:setup", "puma_robstr:setup"
25
-
26
- desc "Update puma configa and Symlink the puma files into latest release"
27
- task :symlink, roles: :app do
28
- run "ln -nfs #{shared_path}/config/puma.rb #{release_path}/config/puma.rb"
29
- run "ln -nfs #{shared_path}/sockets #{release_path}/tmp/sockets"
30
- run "#{sudo} /etc/init.d/puma remove #{current_path}"
31
- run "#{sudo} /etc/init.d/puma add #{current_path} #{puma_user}"
32
- end
33
- after "deploy:symlink", "puma_robstr:symlink"
34
- end
35
- end
@@ -1,50 +0,0 @@
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
@@ -1,28 +0,0 @@
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