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