はじめに
こんにちは。
ドキュメントの管理めんどくさいなと思いますよね。
僕は思います。
今お仕事もらってる会社も、DB定義書やCronのドキュメントなどいろいろととっています。
更新した際に毎回修正がとにかくめんどくさい。
そこで、所属しているslackチームの人に相談したところ神の啓示がきました。
紹介された crondoc を使ってみました。
本題(crondoc)
今回使ったテストでcron設定は以下
PHP_PATH=/usr/bin/php MAIL_TO='' # KPIレポート作成バッチ # 日別、月別のKPIレポートを作成します。 00 20 * * * $PHP_PATH artisan kpi:report # メールマガジン送信バッチ # 対象の時間に送信予定として登録されているメールマガジンを送信します。 10 00,03,06,09,12 * * * $PHP_PATH artisan mailMagazine:send
実行するとこんな感じでした。
$ cron_tab -l | crondoc -s # effective crontab | min|hour|day|month|day week|command | |:---|:---|:---|:---|:---|:---| | PHP_PATH=/usr/bin/php| MAIL_TO='' *** - KPIレポート作成バッチ - KPIレポートを作成します。 | min|hour|day|month|day week|command | |:---|:---|:---|:---|:---|:---| | 00| 20| *| *| *| `$PHP_PATH artisan kpi:report` | *** # commentout crontab generated by crondoc
うーん。ちょっとだけ表示が崩れています。
cronの書き方に問題があるのかもしれません。
本題(cron-doc-gen)
表示が少し崩れましたが、このアプローチは個人的に好きなので、PHPで似たようものを作ってみました。
ざっくり作ったので、例外対応とかはしてません。
今度はパスを指定するようにしたので、実行してみます。
$ ./cron-doc-gen /etc/crontab # Cron Document ## 変数 | Key | Value | |------|------| |PHP_PATH|/usr/bin/php| |MAIL_TO|''| ## バッチ一覧 ### KPIレポート作成バッチ #### 日別、月別のKPIレポートを作成します。 | 分 | 時 | 日 | 月 | 曜日| コマンド | |:------:|:------:|:------:|:------:|:------:|----| |00|20|*|*|*|`$PHP_PATH artisan kpi:report`| ### メールマガジン送信バッチ #### 対象の時間に送信予定として登録されているメールマガジンを送信します。 | 分 | 時 | 日 | 月 | 曜日| コマンド | |:------:|:------:|:------:|:------:|:------:|----| |10|00,03,06,09,12|*|*|*|`$PHP_PATH artisan mailMagazine:send`|
いい感じでまとまりました。
終わりに
もうちょいコードを整理しつつ、mergeされたタイミングで esa
とかにpushするのを作れば、cronのドキュメントは毎回更新されるので、最新に保つことが出来ます。
簡単ですが公開しときます。
Databaseのドキュメント生成ツールも教えてもらったので、次はそちらも試してみます。
現場からは以上です。