kp

foremanを読んでいく

github.com

  • thorを使っている
  • Foreman::CLI < Thorが最初に呼び出されるクラスでForeman::CLI.startが最初に呼ばれる
  • Foreman::CLIコマンドラインからの入力のチェックなど実行前の準備
  • 主な処理はForeman::Engine#startで行う
  • Foreman::Engine::CLIForeman::Engineを継承している
  • 継承しているけど結局継承しているクラスは1つだしforeman単体で使っていたらそんなに意味はなさそう
  • Foreman::Engine#load_procfileProcfileを一つ一つのprocessとして読み込む
  • processForeman::Processインスタンス
  • 結局のところProcess.spawnをしている
  • ログの出力はForeman::Engine::CLI#outputで行う。キレイで分かりやすいログが出て来るのはこの実装のおかげ
  • あまり見たことないけど、foremanは他のライブラリが拡張したりするのを見込んでるのかな?
  • foremanと同等のものが多言語でもあるから1つ読んでると他の言語の勉強にも便利そう