0.0
No commit activity in last 3 years
No release in over 3 years
Next Generation Puma tasks for Mina
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 1.3
>= 0

Runtime

~> 1.2.0
>= 2.13
 Project Readme

Next Generation Mina Puma

I refactor mina-puma( https://github.com/untitledkingdom/mina-puma ) because of the below:

  1. phased_restart and restart need start puma correctly when puma is down.
  2. phased_restart and restart should confirm puma restart successfully.
  3. Add smart_restart mode, it will first try to do phased_restart, when failed, using hard_restart instead.

Mina tasks for handle with Puma.

This gem provides several mina tasks:

mina puma:smart_restart   # Restart puma ( phased_restart then hard_restart )
mina puma:phased_restart  # Restart puma (using phased restart)
mina puma:hard_restart    # Restart puma (using stop, then start)
mina puma:restart         # Restart puma (using pumactl)
mina puma:start           # Start puma
mina puma:stop            # Stop puma
mina puma:status          # Get status

Installation

Add this line to your Rails application's Gemfile:

gem 'mina-ng-puma', require: false

And then execute:

$ bundle

Note: You should remove mina-puma gem to ignore namespace conflict if you have install it before.

$ gem uninstall mina-puma

Usage

Run:

mina init

to generate config/deploy.rb file if you have not configured it yet.

Add this to your config/deploy.rb file:

require 'mina/puma'

Make sure the following settings are set in your config/deploy.rb:

  • deploy_to - deployment path

Make sure the following directories exists on your server:

  • shared/tmp/sockets - directory for socket files.
  • shared/tmp/pids - directory for pid files.

OR you can set other directories by setting follow variables:

  • puma_socket - puma socket file, default is shared/tmp/sockets/puma.sock
  • puma_pid - puma pid file, default shared/tmp/pids/puma.pid
  • puma_state - puma state file, default shared/tmp/sockets/puma.state
  • puma_stdout - puma redirect path for stdout, default shared/log/puma.log
  • puma_stderr - puma redirect path for stderr, default shared/log/puma.log
  • pumactl_socket - pumactl socket file, default shared/tmp/sockets/pumactl.sock
  • puma_root_path - puma command execute root path, default current

Then:

$ bundle exec mina puma:start

Example

require 'mina/puma'

# Add pids and sockets directories to shared dirs
set :shared_dirs, fetch(:shared_dirs, []).push('log', 'tmp/pids', 'tmp/sockets')

task :deploy do
  deploy do
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    ...

    on :launch do
      ...
      invoke :'puma:smart_restart'
    end
  end
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request