ウェブサービスを作っています。

rake kamal:ssh, kamal:console などを作っておくと便利

Kamal で、コンテナ作業をしたいとき kamal app exec -i --reuse "bin/rails console" などと入力するのは大変です。

以下のような rake タスクを作っておくと、rails kamal:console などで実現できて便利かと思います。

lib/tasks/kamal.rake

namespace :kamal do
  task :ssh do
    sh 'kamal app exec -i --reuse bash'
  end

  task :console do
    sh 'kamal app exec -i --reuse "bin/rails console"'
  end

  namespace :maintenance do  # using turnout gem
    task :start do
      sh 'kamal app exec --reuse --roles=web "bin/rails maintenance:start"'
    end

    task :end do
      sh 'kamal app exec --reuse --roles=web "bin/rails maintenance:end"'
    end
  end
end

Fly.io からアイデアを拝借しています。ありがとうございます。

fly.io