← til
Rails / Ruby Sunday, 29 March 2026

Deploy app bằng Kamal với Ruby vừa được nâng cấp

dưới local có thể chạy bình thường nhưng khi deploy nếu chỉ chạy lệnh kamal deploy thì server vẫn chạy phiên bản Ruby cũ. Để cập nhật phiên bản mới trên server giống với local thì cần sửa mục:

# deploy.yml
builder:
  arch: amd64
  args:
    RUBY_VERSION: 4.0.0 <~~ Sửa thành phiên bản mới

# Dockerfile
ARG RUBY_VERSION=4.0.0 <~~ Sửa thành phiên bản mới

Sau đó chạy lệnh kamal deploy --no-cache để build lại image mới và deploy app. Nguyên lý của Kamal là build Docker image → push lên registry → server pull về chạy. Server khi deploy hay dùng bản cache cho lẹ, nên buộc mình phải chạy --no-cache để build bản mới.

Trong quá trình chạy có thể sẽ gặp vài gem không hỗ trợ Ruby mới (4) thì bạn phải tự cài tay lại (bằng bundle update [tên gem]). Trường hợp của mình là gem ffi (1.17.4) và pg (1.6.3).