pre-connectフックが`--skip-hooks`オプションを尊重するように修正
Kamalの--skip-hooksオプションがpre-connectフックをスキップしない問題が修正されました。
背景
Kamalでは、デプロイ時に各種フックを実行できますが、--skip-hooksオプションを指定することでこれらをスキップすることができます。しかし、pre-connectフックだけはこのオプションが適用されず、常に実行されていました。これは一貫性のない動作であり、デバッグやテスト時に不便を引き起こす可能性がありました。
技術的な変更
変更前:
def pre_connect_if_required
if !KAMAL.connected?
run_hook "pre-connect"
KAMAL.connected = true
end
end
変更後:
def pre_connect_if_required
if !KAMAL.connected?
run_hook "pre-connect" unless options[:skip_hooks]
KAMAL.connected = true
end
end
変更内容は単純で、run_hook "pre-connect"の呼び出しにunless options[:skip_hooks]のガード条件を追加しています。これにより、--skip-hooksオプションが指定された場合、pre-connectフックも他のフックと同様にスキップされるようになります。
設計判断
この修正により、すべてのフックが--skip-hooksオプションで一貫してスキップされるようになります。pre-connectフックは接続確立前に実行される特殊なフックですが、他のフックと同じポリシーで扱うことで、ユーザーの期待に沿った直感的な動作となります。
KAMAL.connected = trueの設定は、フックがスキップされた場合でも実行されます。これは、接続状態のフラグ管理はフックの実行とは独立した責務であるためです。