Commit 080593c76585bd1f45418e654842a6784728b246
1 parent
bf00a0de
Exists in
colab
and in
4 other branches
Capistrano 3 installed
Showing
5 changed files
with
133 additions
and
51 deletions
Show diff stats
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 | ... | ... |
| ... | ... | @@ -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) | ... | ... |