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)


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

def puma_daemonize?
  fetch(:puma_daemonize)
end

#puma_pluginsObject



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

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

#puma_preload_app?Boolean

Returns:

  • (Boolean)


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

def puma_preload_app?
  fetch(:puma_preload_app)
end

#puma_workersObject



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

def puma_workers
  fetch(:puma_workers, 0)
end

#register_hooksObject



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

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
# 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, ''

  # 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



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

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