Play Framework 2.1.x で “play run” が指定した設定ファイルを読んでくれない現象に遭遇した。具体的に言うと、次のようにしても dev.conf が無視される。
$ play "run -Dconfig.resource=dev.conf"
これが “play start” のときに同じ指定をすると有効になるのだから、訳が分からない。Stack Overflow で尋ねてみたところ config.resource
ではなく config.file
を試してみてはどうかと言われた。これは上手くいった。次のようにするのである。
$ play "run -Dconfig.file=conf/dev.conf"
正直な所、なぜ config.resource
が無視されて config.file
だと指定通りに動くのかよく分からない。上記の Stack Overflow で回答した方が示してくれた Play Framework のコードスニペットへのリンクも、あまり関係ないように思える。
他にもこの件でハマった人がいるようである。
NOTE: At the time of writing (Play 2.0.2) I can’t get config.resource to work when starting app in dev mode (using play run). Instead one can use config.file which, if using a relative path, points to project root: play -Dconfig.file=conf/prod.conf run
注意: 執筆時点の Play 2.0.2 では
config.resource
を開発モード (play run) で有効にすることができなかった。その代わり、config.file
で設定ファイルを相対パスで指定できる。 “play -Dconfig.file=conf/prod.conf run
” のようにするのだ。
何にせよ、不可解な挙動だと思う。