Created
March 31, 2014 14:43
Revisions
-
jancel created this gist
Mar 31, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,62 @@ source 'https://rubygems.org' gem 'rails', "3.2.10" # omitted group :stage, :production do gem 'pg' gem 'unicorn' end # Gems used only for assets and not required # in production environments by default. group :assets do gem 'coffee-rails', '~> 3.2.1' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', :platforms => :ruby gem 'libv8' gem 'uglifier', '>= 1.0.3' end # To use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.0.0' # To use Jbuilder templates for JSON # gem 'jbuilder' # Use unicorn as the app server # gem 'unicorn' # Deploy with Capistrano # gem 'capistrano' # To use debugger group :test do gem 'cucumber-rails', :require => false gem 'database_cleaner' gem 'simplecov', :require => false gem 'launchy', :require => false gem 'mocha' # gem 'email_spec' end group :development, :test do gem 'debugger' gem 'rspec-rails' gem 'capybara' gem 'sqlite3' gem 'vcr' gem 'fakeweb' gem 'shoulda-matchers' gem 'factory_girl_rails' end group :development do gem 'capistrano' gem 'rvm-capistrano' end This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,164 @@ def run_remote_rake(rake_cmd) rake_args = ENV['RAKE_ARGS'].to_s.split(',') cmd = "cd #{fetch(:latest_release)} && #{fetch(:rake, "rake")} RAILS_ENV=#{fetch(:rails_env, "production")} #{rake_cmd}" cmd += "['#{rake_args.join("','")}']" unless rake_args.empty? run cmd set :rakefile, nil if exists?(:rakefile) end require 'rvm/capistrano' # Bundler set :bundle_roles, [:app] require 'bundler/capistrano' load 'deploy/assets' set :git_name, "jancel" set :user, 'deployment' set :application, "listr" default_run_options[:pty] = true set :repository, "git@bitbucket.org:#{git_name}/#{application}.git" set :scm, :git # Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` set :deploy_to, "/home/#{user}/#{application}" set :git_shallow_clone, 1 set :keep_releases, 5 set :branch do default_tag = `git tag`.split("\n").last tag = Capistrano::CLI.ui.ask "Tag to deploy (make sure to push the tag first): [#{default_tag}] " tag.empty? ? default_tag : tag end set :use_sudo, false server '10.10.10.10', :web, :app, :db, :primary => true ssh_options[:keys] = [File.join(ENV['HOME'], 'id_rsa')] ssh_options[:port] = 22 ssh_options[:forward_agent] = true ssh_options[:paranoid] = false namespace :custom do desc "Add config symlinks" task :links, :roles => :app do #["database", "application","features"].each do | cfg | cfg = "database" run <<-CMD ln -s #{shared_path}/config/#{cfg}.yml #{release_path}/config/#{cfg}.yml CMD #end end desc "Run db seeding" task :seed, :roles => :app do run_remote_rake "db:seed" end end set :unicorn_pid do "#{shared_path}/pids/unicorn.pid" end after "bundle:install", "custom:links" #after "custom:links", "deploy:assets:precompile" #before "deploy:assets:precompile", "bundle:install" #after "bundle:install", "custom:links" #before "deploy:migrate", "custom:seed" #after "deploy:migrate", "custom:seed" # remove old releases after "deploy", "deploy:cleanup" namespace :deploy do task :start do top.unicorn.start #top.resque.start end task :stop do top.unicorn.stop #top.resque.stop end task :restart do top.unicorn.reload #top.resque.restart end end namespace :unicorn do desc "start unicorn" task :start, :roles => :app do run "cd #{current_path} && bundle exec unicorn -c config/unicorn.rb -E #{rails_env} -D" end desc "stop unicorn" task :stop, :roles => :app do run "#{try_sudo} kill -s QUIT `cat #{unicorn_pid}`" end desc "restart unicorn" task :restart, :roles => :app do top.unicorn.stop top.unicorn.start end desc "reload unicorn (gracefully restart workers)" task :reload, :roles => :app do run "#{try_sudo} kill -s USR2 `cat #{unicorn_pid}`" end desc "reconfigure unicorn (reload config and gracefully restart workers)" task :reconfigure, :roles => :app do run "#{try_sudo} kill -s HUP `cat #{unicorn_pid}`" end end namespace :resque do desc "start workers" task :start, :roles => :app do run_remote_rake "resque:start_workers" end desc "stop worlers" task :stop, :roles => :app do run_remote_rake "resque:stop_workers" end desc "restart workers" task :restart, :rolse => :app do run_remote_rake "resque:restart_workers" end end #set :application, "set your application name here" #set :repository, "set your repository location here" # set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names # Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` #role :web, "your web-server here" # Your HTTP server, Apache/etc #role :app, "your app-server here" # This may be the same as your `Web` server #role :db, "your primary db-server here", :primary => true # This is where Rails migrations will run #role :db, "your slave db-server here" # if you want to clean up old releases on each deploy uncomment this: # after "deploy:restart", "deploy:cleanup" # if you're still using the script/reaper helper you will need # these http://github.com/rails/irs_process_scripts # If you are using Passenger mod_rails uncomment this: # namespace :deploy do # task :start do ; end # task :stop do ; end # task :restart, :roles => :app, :except => { :no_release => true } do # run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" # end # end