Commit 080593c76585bd1f45418e654842a6784728b246

Authored by Rafael Manzo
1 parent bf00a0de

Capistrano 3 installed

Capfile
1   -load 'deploy'
2   -load 'deploy/assets'
3   -load 'config/deploy' # remove this line to skip loading any of the default tasks
4 1 \ No newline at end of file
  2 +# Load DSL and Setup Up Stages
  3 +require 'capistrano/setup'
  4 +
  5 +# Includes default deployment tasks
  6 +require 'capistrano/deploy'
  7 +
  8 +# Includes tasks from other gems included in your Gemfile
  9 +#
  10 +# For documentation on these, see for example:
  11 +#
  12 +# https://github.com/capistrano/rvm
  13 +# https://github.com/capistrano/rbenv
  14 +# https://github.com/capistrano/chruby
  15 +# https://github.com/capistrano/bundler
  16 +# https://github.com/capistrano/rails/tree/master/assets
  17 +# https://github.com/capistrano/rails/tree/master/migrations
  18 +#
  19 +require 'capistrano/rvm'
  20 +# require 'capistrano/rbenv'
  21 +# require 'capistrano/chruby'
  22 +require 'capistrano/bundler'
  23 +require 'capistrano/rails/assets'
  24 +require 'capistrano/rails/migrations'
  25 +
  26 +# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
  27 +Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
... ...
Gemfile
... ... @@ -75,8 +75,10 @@ group :development, :test do
75 75 gem 'factory_girl_rails', '~> 4.3.0'
76 76  
77 77 # Deployment
78   - gem 'capistrano', "~>2.15.5"
79   - gem 'rvm-capistrano'
  78 + gem 'capistrano', "~>3.0.1", require: false
  79 + gem 'capistrano-rails'
  80 + gem 'capistrano-bundler'
  81 + gem 'capistrano-rvm'
80 82  
81 83 # JavaScript unit tests
82 84 gem "konacha", "~> 3.0.0"
... ...
Gemfile.lock
... ... @@ -32,12 +32,19 @@ GEM
32 32 atomic (1.1.14)
33 33 bcrypt-ruby (3.1.2)
34 34 builder (3.1.4)
35   - capistrano (2.15.5)
36   - highline
37   - net-scp (>= 1.0.0)
38   - net-sftp (>= 2.0.0)
39   - net-ssh (>= 2.0.14)
40   - net-ssh-gateway (>= 1.1.0)
  35 + capistrano (3.0.1)
  36 + i18n
  37 + rake (>= 10.0.0)
  38 + sshkit (>= 0.0.23)
  39 + capistrano-bundler (1.1.1)
  40 + capistrano (~> 3.0)
  41 + sshkit (>= 1.2.0)
  42 + capistrano-rails (1.1.0)
  43 + capistrano (>= 3.0.0)
  44 + capistrano-bundler (>= 1.0.0)
  45 + capistrano-rvm (0.1.0)
  46 + capistrano (~> 3.0)
  47 + sshkit (~> 1.2.0)
41 48 capybara (2.1.0)
42 49 mime-types (>= 1.16)
43 50 nokogiri (>= 1.3.3)
... ... @@ -92,7 +99,6 @@ GEM
92 99 rmagick
93 100 gyoku (1.1.0)
94 101 builder (>= 2.1.2)
95   - highline (1.6.20)
96 102 hike (1.2.3)
97 103 httpi (2.1.0)
98 104 rack
... ... @@ -131,11 +137,7 @@ GEM
131 137 multi_test (0.0.2)
132 138 net-scp (1.1.2)
133 139 net-ssh (>= 2.6.5)
134   - net-sftp (2.1.2)
135   - net-ssh (>= 2.6.5)
136 140 net-ssh (2.7.0)
137   - net-ssh-gateway (1.2.0)
138   - net-ssh (>= 2.6.5)
139 141 nokogiri (1.6.0)
140 142 mini_portile (~> 0.5.0)
141 143 nori-ng-1.6 (2.3.0)
... ... @@ -182,8 +184,6 @@ GEM
182 184 rspec-expectations (~> 2.14.0)
183 185 rspec-mocks (~> 2.14.0)
184 186 rubyntlm (0.3.4)
185   - rvm-capistrano (1.5.1)
186   - capistrano (~> 2.15.4)
187 187 sass (3.2.12)
188 188 sass-rails (4.0.1)
189 189 railties (>= 4.0.0, < 5.0)
... ... @@ -217,6 +217,10 @@ GEM
217 217 activesupport (>= 3.0)
218 218 sprockets (~> 2.8)
219 219 sqlite3 (1.3.8)
  220 + sshkit (1.2.0)
  221 + net-scp (>= 1.1.2)
  222 + net-ssh
  223 + term-ansicolor
220 224 term-ansicolor (1.2.2)
221 225 tins (~> 0.8)
222 226 therubyracer (0.12.0)
... ... @@ -254,7 +258,10 @@ PLATFORMS
254 258 ruby
255 259  
256 260 DEPENDENCIES
257   - capistrano (~> 2.15.5)
  261 + capistrano (~> 3.0.1)
  262 + capistrano-bundler
  263 + capistrano-rails
  264 + capistrano-rvm
258 265 coffee-rails (~> 4.0.0)
259 266 coveralls
260 267 cucumber (~> 1.3.10)
... ... @@ -274,7 +281,6 @@ DEPENDENCIES
274 281 poltergeist (~> 1.4.0)
275 282 rails (= 4.0.1)
276 283 rspec-rails
277   - rvm-capistrano
278 284 sass-rails (~> 4.0.0.rc2)
279 285 sdoc
280 286 shoulda-matchers
... ...
config/deploy.rb
1   -require "rvm/capistrano"
2   -require 'bundler/capistrano'
  1 +set :application, 'mezuro'
  2 +set :repo_url, 'https://github.com/mezuro/mezuro.git'
3 3  
4   -set :default_shell, "/bin/bash -l"
5   -set :rails_env, "production"
  4 +# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
6 5  
7   -set :rvm_ruby_string, :local # use the same ruby as used locally for deployment
8   -set :rvm_autolibs_flag, "read-only" # more info: rvm help autolibs
9   -set :rvm_type, :user
10   -
11   -set :application, "mezuro"
12 6 set :deploy_to, "/home/mezuro/app"
13   -set :repository, "https://github.com/mezuro/mezuro.git"
  7 +# set :scm, :git
14 8  
15   -set :user, 'mezuro'
16   -set :use_sudo, false
17   -set :rvm_install_with_sudo, true
18   -default_run_options[:pty] = true
  9 +# set :format, :pretty
  10 +# set :log_level, :debug
  11 +# set :pty, true
19 12  
20   -# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names
21   -# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
  13 +# set :linked_files, %w{config/database.yml}
  14 +# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
22 15  
23   -role :web, "mezuro.org" # Your HTTP server, Apache/etc
24   -role :app, "mezuro.org" # This may be the same as your `Web` server
25   -role :db, "mezuro.org", :primary => true # This is where Rails migrations will run
  16 +# set :default_env, { path: "/opt/ruby/bin:$PATH" }
  17 +# set :keep_releases, 5
26 18  
27   -# before 'deploy:setup', 'rvm:install_rvm' # install RVM
28   -before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, OR:
29   -before 'deploy:setup', 'rvm:create_gemset' # only create gemset
30   -after 'deploy:assets:symlink', 'deploy:config_symlinks'
31   -after 'deploy:restart', "deploy:cleanup"
  19 +# User info
  20 +set :user, 'mezuro'
  21 +
  22 +# RVM
  23 +set :rvm_ruby_string, :local # use the same ruby as used locally for deployment
  24 +set :rvm_autolibs_flag, "read-only" # more info: rvm help autolibs
  25 +set :rvm_type, :user
  26 +set :rvm_install_with_sudo, true
32 27  
33 28 namespace :deploy do
34   - task :start do ; end
35 29  
36   - task :stop do ; end
  30 + desc 'Restart application'
  31 + task :restart do
  32 + on roles(:app), in: :sequence, wait: 5 do
  33 + execute "touch #{File.join(current_path,'tmp','restart.txt')}"
  34 + end
  35 + end
37 36  
38   - task :restart, :roles => :app, :except => { :no_release => true } do
39   - run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  37 + after :restart, :clear_cache do
  38 + on roles(:web), in: :groups, limit: 3, wait: 10 do
  39 + # Here we can do anything such as:
  40 + # within release_path do
  41 + # execute :rake, 'cache:clear'
  42 + # end
  43 + end
40 44 end
41 45  
42   - task :config_symlinks do
43   - run "ln -s #{File.join(deploy_to, 'shared', 'config/database.yml')} #{File.join(release_path, 'config/database.yml')}"
  46 + before :compile_assets, :config_symlinks do
  47 + on roles(:web) do
  48 + execute "ln -s #{File.join(deploy_to, 'shared', 'config/database.yml')} #{File.join(release_path, 'config/database.yml')}"
  49 + end
44 50 end
45   -end
46 51 \ No newline at end of file
  52 +
  53 + after :finishing, 'deploy:cleanup'
  54 +
  55 +end
... ...
config/deploy/production.rb 0 → 100644
... ... @@ -0,0 +1,42 @@
  1 +set :stage, :production
  2 +
  3 +# Simple Role Syntax
  4 +# ==================
  5 +# Supports bulk-adding hosts to roles, the primary
  6 +# server in each group is considered to be the first
  7 +# unless any hosts have the primary property set.
  8 +#role :app, %w{mezuro.org}
  9 +#role :web, %w{mezuro.org}
  10 +#role :db, %w{mezuro.org}
  11 +
  12 +# Extended Server Syntax
  13 +# ======================
  14 +# This can be used to drop a more detailed server
  15 +# definition into the server list. The second argument
  16 +# something that quacks like a hash can be used to set
  17 +# extended properties on the server.
  18 +server 'mezuro.org', user: 'mezuro', roles: %w{web app db}
  19 +
  20 +# you can set custom ssh options
  21 +# it's possible to pass any option but you need to keep in mind that net/ssh understand limited list of options
  22 +# you can see them in [net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start)
  23 +# set it globally
  24 +# set :ssh_options, {
  25 +# keys: %w(/home/rlisowski/.ssh/id_rsa),
  26 +# forward_agent: false,
  27 +# auth_methods: %w(password)
  28 +# }
  29 +# and/or per server
  30 +# server 'example.com',
  31 +# user: 'user_name',
  32 +# roles: %w{web app},
  33 +# ssh_options: {
  34 +# user: 'user_name', # overrides user setting above
  35 +# keys: %w(/home/user_name/.ssh/id_rsa),
  36 +# forward_agent: false,
  37 +# auth_methods: %w(publickey password)
  38 +# # password: 'please use keys'
  39 +# }
  40 +# setting per server overrides global ssh_options
  41 +
  42 +# fetch(:default_env).merge!(rails_env: :production)
... ...