typesafe config について
typesafe config とは、Play Framework でも採用されている便利な config ライブラリである。
typesafe config の使い方について
READMEを見ると以下のような記述がある
The convenience method ConfigFactory.load() loads the following (first-listed are higher priority): - system properties - application.conf (all resources on classpath with this name) - application.json (all resources on classpath with this name) - application.properties (all resources on classpath with this name) - reference.conf (all resources on classpath with this name)
最初 application.conf を置いて ConfigFactory.load()
したら大体いい感じに読んでくれるのかと思ったので、試しに src/main/scala/application.conf
に以下のようなものを置いた。
token = "hogehoge"
そしてメインのコードは src/main/scala/Main.scala
に置いた。
import com.typesafe.config.ConfigFactory object Main extends App { println("start app") implicit val conf = ConfigFactory.load() println(conf.getString("token")) }
ちなみに build.sbt
は以下の通りだ
name := "hoge" version := "1.0" scalaVersion := "2.12.3" libraryDependencies ++= Seq( "com.typesafe" % "config" % "1.3.1" )
この状態で sbt run
すると以下のエラーになった
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'token'
つまり、 application.conf
がうまく読み込めていなかった。
どのようなディレクトリ配置にするのが正しかったのか
結局以下のようにするのが正しかった
build.sbt
src/main/scala/Main.scala
src/main/resources/application.conf
このようなディレクトリ配置にしたら、 ConfigFactory.load()
で application.conf
が読まれるようになった。
resource ではなく resources なので注意
見出しの通り。ずっと src/main/resource/application.conf
に置いたりして「動かねぇな〜」ってめっちゃ迷っていた。 applicatons ! 複数形なので注意が必要だ。
- 作者: Martin Odersky,Lex Spoon,Bill Venners,長尾高弘,羽生田栄一,水島宏太
- 出版社/メーカー: インプレス
- 発売日: 2016/09/20
- メディア: Kindle版
- この商品を含むブログを見る