mac で dev_appserver.py を再起動しないと変更が反映されなかった

OSは mac, runtime は python27 のお話。 Google Cloud SDK のバージョンは 228.0.0。 components のバージョンは最後に書いた

結論から

起動してるGAEアプリケーションが . で始まるディレクトリ以下にあるとダメ

僕の場合は ghq を使って $HOME/.ghq/hoge/fuga 以下にアプリを clone して作業してたのでダメだった。

昔はいろいろあったようだが、現在の dev_appserver はファイルの変更を検知して変更を反映してくれるようになっている。

macの場合は inotify が使えないので、ファイルの mtime をポーリングして変更を検出している。ポーリング対象から除外する条件みたいなのが用意されており、恐らく意図としては .git とかを除外するために、 . から始まるディレクトリは除外するようになっている。

しかし、実際には working directory 以下の . 始まりのディレクトリを無視するのではなく、絶対パスで途中に . 始まりのディレクトリがあるとまるっとwatch対象から除外されてしまう。(inotify watcherでも同じ気はするが確認はしてない)

ということで ghq のルートディレクトリを $HOME/.ghq から $HOME/ghq にすることで問題は解決した。

おしまい

補足。 Google Cloud SDK の version

❯ gcloud --version
Google Cloud SDK 228.0.0
alpha 2018.11.09
app-engine-python 1.9.80
app-engine-python-extras 1.9.74
beta 2018.11.09
bq 2.0.39
cloud-datastore-emulator 2.0.2
core 2018.12.07
gsutil 4.34