namespace :puma do
desc "Start puma instance for this application" task :start do on roles fetch(:puma_roles) do within release_path do with rails_env: fetch(:rails_env) do execute :bundle, "exec puma -b '#{fetch(:puma_socket)}'", " -e #{fetch(:stage)} ", "--control '#{fetch(:pumactl_socket)}'", "-S #{fetch(:puma_state)}", fetch(:puma_flags), ">> #{fetch(:puma_log)} 2>&1 &" end end end end desc "Stop puma instance for this application" task :stop do on roles fetch(:puma_roles) do within release_path do execute :bundle, "exec pumactl -S #{fetch(:puma_state)} stop" end end end desc "Restart puma instance for this application" task :restart do on roles fetch(:puma_roles) do within release_path do execute :bundle, "exec pumactl -S #{fetch(:puma_state)} restart" end end end desc "Show status of puma for this application" task :status do on roles fetch(:puma_roles) do within release_path do execute :bundle, "exec pumactl -S #{fetch(:puma_state)} stats" end end end desc "Show status of puma for all applications" task :overview do on roles fetch(:puma_roles) do within release_path do execute :bundle, "exec puma status" end end end
end
namespace :load do
task :defaults do set :sockets_path, -> { shared_path.join('tmp/sockets/') } set :puma_roles, -> { :app } set :puma_socket, -> { "unix://#{fetch(:sockets_path).join('puma.sock')}" } set :pumactl_socket, -> { "unix://#{fetch(:sockets_path).join('pumactl.sock')}" } set :puma_state, -> { fetch(:sockets_path).join('puma.state') } set :puma_log, -> { shared_path.join("log/puma-#{fetch(:stage)}.log") } set :puma_flags, -> { nil } end
end