
Một bức ảnh gây ra nhiều đau đớn cho những ai dùng Puma 4. Đơn giản hơn, Puma 4 thỉnh thoảng à không phải là rất hay không thể tự chạy puma:restart với Capistrano 
Và có rất nhiều cách work around mà các bạn có thể tìm thấy trên Stack Overflow. Nhưng… nó cũng chỉ là work around. Tốn thêm thời gian restart và maintain.
Vì vậy hôm nay mình sẽ hướng dẫn mọi người upgrade lên Puma 5 để thoát khỏi nỗi khổ như mình đã gánh chịu nhiều năm qua.
Cảm ơn tác giả comment này đã cho mình động lực upgrage Puma 5 
Đầu tiên là update Gemfile
gem 'puma', '~> 5.6.8'Chạy bundle:
$ bundle installUpdate Capfile
install_plugin Capistrano::Puma::Systemd # Thêm dòng này
# install_plugin Capistrano::Puma::Daemon # Xoá dòng nàyNhớ xoá mấy cái work around mà lúc trước xài (nếu có :D)
Rồi tới đây push commit lên được rồi. Nhớ là push commit thôi nha :). Push lên tạo PR rồi để đó đọc tiếp nè.
Tiếp theo setting trên server như sau:
Grand permission cho deploy user:
$ sudo cat /etc/sudoersTiếp theo sửa deploy user như sau:
deploy ALL=(ALL:ALL) ALL # deploy là user namecd đến app_path rồi gõ lệnh:
$ cap production puma:systemd:configĐể làm gì ư? Để nó show list puma command line và cái này mới quan trọng nè. Nó tự tạo puma_appname_production.service
Bây giờ update file đó lại như sau:
Đầu tiên mở file đó ra:
$ sudo nano /etc/systemd/system/puma_appname_production.serviceUpdate User (Cái này cực kì quan trọng nha nếu không có cái này thì nó sẽ lỗi và loop, mình đã tốn rất nhiều thời gian để phát hiện ra nguyên nhân)
User=deploy # deploy là tên user ubuntu mà các bạn dùng để deploySau khi lưu lại thì các bạn phải chạy lệnh này để nó lưu lại setting:
$ sudo systemctl daemon-reloadOk giờ các bạn có thể merge PR lúc nãy mới tạo và deploy thử nha. Good luck :D
À nhớ kill puma.sock cũ sau khi deploy thành công nha: 
$ ps aux | grep puma