kran 文件

別名

別名就是在 config/kran.yml 裡替一段 kran 指令取個名字。

內建的 shell 與 console

aliases:
  shell: exec --interactive bash
  console: exec --interactive bin/rails console
kran shell
kran console

名字沿用 kamal 的習慣。

image 裡沒有 bash 的話:

aliases:
  shell: exec --interactive sh

自訂別名

aliases:
  migrate: exec bin/rails db:migrate
  routes: exec bin/rails routes
  errors: logs -g ERROR
  tail: logs -f -n 100
  psql: exec --interactive psql $DATABASE_URL

值就是 kran 後面那一段,照 shell 的斷詞規則拆開。

額外參數會接在後面

$ kran migrate --trace --dry-run
... exec "$pod" -- bin/rails db:migrate --trace

搭配多環境使用

kran console -d staging

多環境設定會在別名展開之前先讀進來,所以 config/kran.staging.yml 可以自己加別名,或覆寫基礎檔案 裡的某一個。

蓋不掉內建指令

kran 先比對內建指令,比不到才去查別名表。

$ kran nope
Could not find command "nope".

別名做不到的事

別名是 kran 展開的,不是 shell 展開的,所以會跟著 repository 一起分享給團隊。展開的結果必須是一行 kran 指令,deploy && curl ... 這種就不能當別名。