Class: Capistrano::Puma

Inherits:
Plugin
  • Object
show all
Includes:
PumaCommon
Defined in:
lib/capistrano/puma.rb

Defined Under Namespace

Classes: Jungle, Monit, Nginx, Workers

Instance Method Summary collapse

Methods included from PumaCommon

#puma_bind, #puma_switch_user, #puma_user, #template_puma

Instance Method Details

#define_tasksObject



55
56
57
# File 'lib/capistrano/puma.rb', line 55

def define_tasks
  eval_rakefile File.expand_path('../tasks/puma.rake', __FILE__)
end

#puma_daemonize?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/capistrano/puma.rb', line 103

def puma_daemonize?
  fetch(:puma_daemonize)
end

#puma_pluginsObject



107
108
109
110
111
# File 'lib/capistrano/puma.rb', line 107

def puma_plugins
  Array(fetch(:puma_plugins)).collect do |bind|
    "plugin '#{bind}'"
  end.join("\n")
end

#puma_preload_app?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/capistrano/puma.rb', line 99

def puma_preload_app?
  fetch(:puma_preload_app)
end

#puma_workersObject



95
96
97
# File 'lib/capistrano/puma.rb', line 95

def puma_workers
  fetch(:puma_workers, 0)
end

#register_hooksObject



90
91
92
93
# File 'lib/capistrano/puma.rb', line 90

def register_hooks
  after 'deploy:check', 'puma:check'
  after 'deploy:finished', 'puma:smart_restart'
end

#set_defaultsObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/capistrano/puma.rb', line 59

def set_defaults
  set_if_empty :puma_role, :app
  set_if_empty :puma_env, -> { fetch(:rack_env, fetch(:rails_env, fetch(:stage))) }
  # Configure "min" to be the minimum number of threads to use to answer
  # requests and "max" the maximum.
  set_if_empty :puma_threads, [0, 16]
  set_if_empty :puma_workers, 0
  set_if_empty :puma_rackup, -> { File.join(current_path, 'config.ru') }
  set_if_empty :puma_state, -> { File.join(shared_path, 'tmp', 'pids', 'puma.state') }
  set_if_empty :puma_pid, -> { File.join(shared_path, 'tmp', 'pids', 'puma.pid') }
  set_if_empty :puma_bind, -> { File.join("unix://#{shared_path}", 'tmp', 'sockets', 'puma.sock') }
  set_if_empty :puma_control_app, false
  set_if_empty :puma_default_control_app, -> { File.join("unix://#{shared_path}", 'tmp', 'sockets', 'pumactl.sock') }
  set_if_empty :puma_conf, -> { File.join(shared_path, 'puma.rb') }
  set_if_empty :puma_access_log, -> { File.join(shared_path, 'log', 'puma_access.log') }
  set_if_empty :puma_error_log, -> { File.join(shared_path, 'log', 'puma_error.log') }
  set_if_empty :puma_init_active_record, false
  set_if_empty :puma_preload_app, false
  set_if_empty :puma_daemonize, false
  set_if_empty :puma_tag, ''
  set_if_empty :puma_restart_command, 'bundle exec puma'

  # Chruby, Rbenv and RVM integration
  append :chruby_map_bins, 'puma', 'pumactl'
  append :rbenv_map_bins, 'puma', 'pumactl'
  append :rvm_map_bins, 'puma', 'pumactl'

  # Bundler integration
  append :bundle_bins, 'puma', 'pumactl'
end

#upload_puma_rb(role) ⇒ Object



113
114
115
# File 'lib/capistrano/puma.rb', line 113

def upload_puma_rb(role)
  template_puma 'puma', fetch(:puma_conf), role
end