Skip to content

Instantly share code, notes, and snippets.

@Golfer
Forked from evadne/0_CONTRIBUTORS.md
Created March 12, 2019 18:26
Show Gist options
  • Select an option

  • Save Golfer/68744d36ba4e890ceffa828c95c2e3c2 to your computer and use it in GitHub Desktop.

Select an option

Save Golfer/68744d36ba4e890ceffa828c95c2e3c2 to your computer and use it in GitHub Desktop.

Revisions

  1. @evadne evadne revised this gist Sep 4, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 0_CONTRIBUTORS.md
    Original file line number Diff line number Diff line change
    @@ -1 +1 @@
    - Josh Goebel (@yyyc514): suggested lazy evaluation on `set`s
    - Josh Goebel (@yyyc514): suggested lazy evaluation on `set`
  2. @evadne evadne revised this gist Sep 4, 2015. 2 changed files with 1 addition and 1 deletion.
    1 change: 0 additions & 1 deletion 0_CONTRIBUTORS
    Original file line number Diff line number Diff line change
    @@ -1 +0,0 @@
    - Josh Goebel (@yyyc514)
    1 change: 1 addition & 0 deletions 0_CONTRIBUTORS.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    - Josh Goebel (@yyyc514): suggested lazy evaluation on `set`s
  3. @evadne evadne renamed this gist Sep 4, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. @evadne evadne revised this gist Sep 4, 2015. 2 changed files with 7 additions and 6 deletions.
    1 change: 1 addition & 0 deletions CONTRIBUTORS
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    - Josh Goebel (@yyyc514)
    12 changes: 6 additions & 6 deletions deploy.rb
    Original file line number Diff line number Diff line change
    @@ -29,24 +29,24 @@
    set :migration_role, :main
    set :conditionally_migrate, false

    set :puma_access_log, "#{shared_path}/log/puma.error.log"
    set :puma_access_log, -> { "#{shared_path}/log/puma.error.log" }
    set :puma_default_hooks, false
    set :puma_error_log, "#{shared_path}/log/puma.access.log"
    set :puma_error_log, -> { "#{shared_path}/log/puma.access.log" }
    set :puma_init_active_record, false
    set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
    set :puma_pid,-> { "#{shared_path}/tmp/pids/puma.pid" }
    set :puma_port, 5000
    set :puma_preload_app, false
    set :puma_prune_bundler, true
    set :puma_state, "#{shared_path}/tmp/pids/puma.state"
    set :puma_state, -> { "#{shared_path}/tmp/pids/puma.state" }
    set :puma_threads, [4, 32]
    set :puma_workers, 2
    set :puma_worker_timeout, nil

    set :sidekiq_concurrency, 33
    set :sidekiq_default_hooks, false
    set :sidekiq_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
    set :sidekiq_log, "#{release_path}/log/sidekiq.log"
    set :sidekiq_pid, "#{shared_path}/tmp/pids/sidekiq.pid"
    set :sidekiq_log, -> { "#{release_path}/log/sidekiq.log" }
    set :sidekiq_pid, -> { "#{shared_path}/tmp/pids/sidekiq.pid" }
    set :sidekiq_processes, 2
    set :sidekiq_role, :app
    set :sidekiq_queue, [
  5. @evadne evadne created this gist Sep 4, 2015.
    12 changes: 12 additions & 0 deletions Capfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    # Capfile

    require 'capistrano/setup'
    require 'capistrano/deploy'
    require 'capistrano/rvm'
    require 'capistrano/bundler'
    require 'capistrano/rails'
    require 'capistrano/puma'
    require 'capistrano/sidekiq'
    require 'capistrano/upload-config'

    Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
    11 changes: 11 additions & 0 deletions Gemfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    # Gemfile

    group :development do
    gem 'capistrano', require: false
    gem 'capistrano-bundler', '~> 1.1', require: false
    gem 'capistrano-rails', '~> 1.1', require: false
    gem 'capistrano-rvm', '~> 0.1', require: false
    gem 'capistrano-sidekiq', require: false
    gem 'capistrano-upload-config', require: false
    gem 'capistrano3-puma', '~> 1.1.0', require: false
    end
    191 changes: 191 additions & 0 deletions deploy.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,191 @@
    # config/deploy.rb

    lock '3.4.0'

    set :application, 'example-application'
    set :repo_url, '[email protected]:eduvo/example-application.git'
    set :user, 'deployer'

    set :branch, (ENV["REVISION"] || ENV["BRANCH_NAME"] || proc { `git rev-parse --abbrev-ref HEAD`.chomp }.call)
    set :format, :pretty
    set :keep_releases, 5
    set :log_level, :debug
    set :scm, :git

    set :pty, false
    set :use_sudo, false
    set :deploy_via, :remote_cache
    set :deploy_to, "/srv/#{fetch(:application)}"

    set :bundle_binstubs, -> { shared_path.join('bin') }
    set :bundle_flags, "--deployment"
    set :bundle_jobs, 8
    set :rails_env, :production
    set :ssh_options, forward_agent: true

    set :rvm_roles, %i(app web)
    set :rvm_ruby_version, '2.2.2'

    set :migration_role, :main
    set :conditionally_migrate, false

    set :puma_access_log, "#{shared_path}/log/puma.error.log"
    set :puma_default_hooks, false
    set :puma_error_log, "#{shared_path}/log/puma.access.log"
    set :puma_init_active_record, false
    set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
    set :puma_port, 5000
    set :puma_preload_app, false
    set :puma_prune_bundler, true
    set :puma_state, "#{shared_path}/tmp/pids/puma.state"
    set :puma_threads, [4, 32]
    set :puma_workers, 2
    set :puma_worker_timeout, nil

    set :sidekiq_concurrency, 33
    set :sidekiq_default_hooks, false
    set :sidekiq_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
    set :sidekiq_log, "#{release_path}/log/sidekiq.log"
    set :sidekiq_pid, "#{shared_path}/tmp/pids/sidekiq.pid"
    set :sidekiq_processes, 2
    set :sidekiq_role, :app
    set :sidekiq_queue, [
    'immediate,120',
    'high,100',
    'default,80',
    'assets,30',
    'import,25',
    'low,20',
    'scheduler,15',
    'background,10'
    ]

    set :puma_bind, [
    "tcp://0.0.0.0:#{fetch(:puma_port)}",
    "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
    ]

    set :linked_files, %w{
    config/environments/production.env
    }

    set :linked_dirs, fetch(:linked_dirs, []).push(*%w(
    bin
    log
    tmp/pids
    tmp/cache
    tmp/sockets
    vendor/bundle
    public/system
    public/uploads
    ))

    namespace(:hierarchy) {
    desc 'prepare shared directories'
    task(:prepare) {
    on(roles(:app)) {
    execute "mkdir #{shared_path}/tmp/sockets -p"
    execute "mkdir #{shared_path}/tmp/pids -p"
    execute "mkdir #{shared_path}/config/environments -p"
    }
    }
    }

    namespace(:clockwork) {
    desc "Stop clockwork"
    task :stop do
    on roles(:main) do
    within release_path do
    with rails_env: fetch(:rails_env) do
    execute :bundle, :exec, :clockworkd, "-c app/clockwork.rb --pid-dir=#{cw_pid_dir} --log --log-dir=#{cw_log_dir} stop"
    end
    end
    end
    end

    desc "Clockwork status"
    task :status do
    on(roles(:main)) {
    within(release_path) {
    with rails_env: fetch(:rails_env) do
    execute :bundle, :exec, :clockworkd, "-c app/clockwork.rb --pid-dir=#{cw_pid_dir} --log --log-dir=#{cw_log_dir} status"
    end
    }
    }
    end

    desc "Start Clockwork"
    task :start do
    on roles(:main) do
    within release_path do
    with rails_env: fetch(:rails_env) do
    execute :bundle, :exec, :clockworkd, "-c app/clockwork.rb --pid-dir=#{cw_pid_dir} --log --log-dir=#{cw_log_dir} start"
    end
    end
    end
    end

    desc "Restart Clockwork"
    task :restart do
    on(roles(:main)) {
    within(release_path) {
    with rails_env: fetch(:rails_env) do
    execute :bundle, :exec, :clockworkd, "-c app/clockwork.rb --pid-dir=#{cw_pid_dir} --log --log-dir=#{cw_log_dir} restart"
    end
    }
    }
    end

    def cw_log_dir
    "#{shared_path}/log"
    end

    def cw_pid_dir
    "#{shared_path}/tmp/pids"
    end

    def rails_env
    fetch(:rails_env, false) ? "RAILS_ENV=#{fetch(:rails_env)}" : ''
    end
    }

    namespace(:sake) {
    task(:invoke) {
    on(roles(:main)) {
    within(release_path) {
    execute "bundle exec rake #{ENV['task']} RAILS_ENV=#{fetch(:rails_env)}"
    }
    }
    }
    }

    namespace(:inspect) {
    task(:tail) {
    on(roles(:web)) {
    within(shared_path) {
    execute :pwd
    execute "tail -f #{shared_path}/log/puma.access.log -f #{shared_path}/log/puma.error.log -f #{shared_path}/log/sidekiq.log -f #{shared_path}/log/clockworkd.clockwork.output"
    }
    }
    }
    }

    if (ENV["RESTART"] != 'skip')
    namespace(:restart) {
    task(:before) {
    invoke 'puma:config'
    invoke 'clockwork:stop'
    invoke 'sidekiq:quiet'
    }

    task(:after) {
    invoke 'sidekiq:rolling_restart'
    invoke 'puma:smart_restart'
    invoke 'clockwork:start'
    }
    }

    after 'deploy:publishing', 'deploy:restart'
    before 'deploy:restart', 'restart:before'
    after 'deploy:restart', 'restart:after'
    end