我在heroku上運行我的Play應用程序。在heroku上的想法是通過env變量設置各種設置。例如AWS S3祕密訪問密鑰及其ID。這是可以理解的。因此,遵循良好的做法,我將以下設置放到我的conf/application.conf中:Play Framework 2.4.x - activator〜運行不會替代application.conf中的env vars
# AWS.
# ~~~~~
aws.accessKeyID = ${?AWS_ACCESS_KEY_ID}
aws.secretAccessKey = ${?AWS_SECRET_ACCESS_KEY}
好吧,一切都很好。現在,無論何時我運行在PROD或DEV模式下,我都可以改變這些,而不用擔心對它們進行硬編碼。問題是,當我運行激活器〜運行本地開發我的應用程序時,這些設置不會被讀取和設置。這就像激活〜運行忽略完全替代env變量的選項。我已閱讀並以下列方式打印出來加載我的索引頁時:
import play.api.Play.current
...
val v1 = current.configuration.getString("aws.accessKeyID")
val v2 = current.configuration.getString("aws.secretAccessKey")
println("v1=" + v1 + ", v2=" + v2)
讓我給甚至更多的細節來發生的事情:
[email protected]:~/myproj$ echo $AWS_ACCESS_KEY_ID
access-key-id
[email protected]:~/myproj$ echo $AWS_SECRET_ACCESS_KEY
secret-access-key
[email protected]:~/myproj$ activator ~run
[info] Loading project definition from /home/floyd/myproj/project
[info] Set current project to myproj (in build file:/home/floyd/myproj/)
--- (Running the application, auto-reloading is enabled) ---
[info] p.a.l.c.ActorSystemProvider - Starting application default Akka system: application
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console...)
[info] Compiling 1 Scala source to /home/floyd/myproj/target/scala-2.11/classes...
[success] Compiled in 15s
[info] - play.api.libs.concurrent.ActorSystemProvider - Starting application default Akka system: application
[info] - application - ReactiveMongoApi starting...
[info] - application - ReactiveMongoApi successfully started with DB 'test'! Servers:
[localhost:27017]
[info] - play.api.Play - Application started (Dev)
v1=None, v2=None
這兩種情況都沒有印,我會期待查看存儲在env變量中的值。
非常感謝您的幫助!
我已經在2.4.x上測試了這個。按照您的期望工作。你從哪裏調用'println(「v1 =」+ v1 +「,v2 =」+ v2)'?你也可以試試'activator -D AWS_ACCESS_KEY_ID = access-key-id〜run – w4tson
我在我的ApplicationController的getIndexPage函數上調用它。事情是我不想使用-D,因爲AFAIK這些env變量應該從環境中自動讀取。我不想再次通過他們,並在另一個地方提及他們。所以即使沒有-D用法,它也適用於你?嗯,今天晚些時候我會重新測試。你使用什麼激活版本?謝謝。 – flojdek
我只是建議-D嘗試並隔離問題。使用激活器1.3.5進行測試,通過windows上的git-bash和Mac上的1.3.6進行測試。我也在Play中使用了相同的技巧! 2.3.x.仔細檢查你可以打印一些其他不依賴env的自定義配置var – w4tson