pre-connectフックが`--skip-hooks`オプションを尊重するように修正

basecamp/kamal

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の設定は、フックがスキップされた場合でも実行されます。これは、接続状態のフラグ管理はフックの実行とは独立した責務であるためです。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

ガイドライン準拠 ✓ PASS

記事構成とDiffDaily Styleへの準拠状況

記事構成、カスタムMarkdown構文、対象読者への適合性のすべての項目でガイドラインを遵守しています。特に「設計判断」セクションで、コードの構造から設計意図を読み解き解説している点が素晴らしいです。

  • 記事構成(Title、Context、Technical Detail)
  • DiffDaily Styleガイド準拠
  • カスタムMarkdown活用
  • 対象読者への適合性
技術的整合性 ⚠ WARNING

技術的な正確性と表現の適切性

Diff情報が提供されていないため、記事内のコードが実際の変更と完全に一致するかは照合できませんでした。しかし、引用されているコードと技術的な説明は整合が取れており、構文的にも妥当です。PR Titleの「--skip-commit」をコードに合わせて「--skip-hooks」と正しく記述しており、技術的な正確性が高いです。

  • 技術用語の正確性
  • コード例の正確性
  • 説明の技術的正確性
PR内容との整合性 ⚠ WARNING

元のPR情報との一致度

PRのDescriptionが提供されていないため、記事内の主張の完全な裏付けはできませんでした。しかし、PR Titleとコードから推測される内容と記事は一致しており、ハルシネーションは見られません。情報が限られている中で、変更の背景や意図を的確に捉えています。

  • タイトル・説明の一致
  • Diff内容の正確な反映
  • 推測の排除