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



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

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

#puma_daemonize?Boolean

Returns:

  • (Boolean)


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

def puma_daemonize?
  fetch(:puma_daemonize)
end

#puma_pluginsObject



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

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

#puma_preload_app?Boolean

Returns:

  • (Boolean)


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

def puma_preload_app?
  fetch(:puma_preload_app)
end

#puma_workersObject



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

def puma_workers
  fetch(:puma_workers, 0)
end

#register_hooksObject



86
87
88
89
# File 'lib/capistrano/puma.rb', line 86

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

#set_defaultsObject



58
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
# File 'lib/capistrano/puma.rb', line 58

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_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

  # 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



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

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