何が起きていたか?
・ローカル開発環境で go のテンプレートファイルを更新しても GAE の auto reload が走らない
・*.go
ファイルを更新したときは走る
・go version go1.6.2 (appengine-1.9.40) darwin/amd64
goapp 起動時の error log
/usr/local/Cellar/app-engine-go-64/1.9.40/share/app-engine-go-64/google/appengine/tools/devappserver2/mtime_file_watcher.py:115: UserWarning: There are too many files in your application for changes in all of them to be monitored. You may have to restart the development server to see some changes to your files.
原因
- 監視ファイルが多くなった為、ファイル監視の閾値を超えてしまった
- たぶん node module 系が含まれてしまっている
閾値と監視対象ファイルをどこで設定しているのか
ファイル数上限
_MAX_MONITORED_FILES = 10000
監視対象外ファイル
_IGNORED_FILE_SUFFIXES = ( # Python temporaries '.pyc', '.pyo', # Backups '~', # Emacs '#', # Vim '.swp', '.swo', )
とりあえずの対応
- これらの設定は固定値で外から指定できなさそうなので一旦直接書き換えた・・
(その1)ファイル上限数を変更
vim /usr/local/Cellar/app-engine-go-64/1.9.40/share/app-engine-go-64/google/appengine/tools/devappserver2/mtime_file_watcher.py
下記のように書き換え
-- _MAX_MONITORED_FILES = 10000 ++ _MAX_MONITORED_FILES = 100000
(その2)除外ファイルに追加
vim /usr/local/Cellar/app-engine-go-64/1.9.40/share/app-engine-go-64/google/appengine/tools/devappserver2/watcher_common.py
下記のように追記
_IGNORED_FILE_SUFFIXES = (
# Python temporaries
'.pyc',
'.pyo',
# Backups
'~',
# Emacs
'#',
# Vim
'.swp',
'.swo',
++ '.js',
)