【问题标题】:How to specify play mode (prod, dev) when starting a "dist" application启动“dist”应用程序时如何指定播放模式(prod、dev)
【发布时间】:2015-06-04 16:55:03
【问题描述】:

我想知道如何在 Prod 中启动打包的 play v2.3.7 应用程序(由 dist 命令创建) Dev 模式。

我们使用 sbt dist 创建我们的可分发工件,它根据these instructions 生成一个 zip 文件。我们将 zip 文件复制到将要运行的机器上,解压缩并根据that page 上的说明启动它。但是,它总是以 Play.isProd 评估为 true 开始。

在开发我们的应用程序时,我们可以使用 activator start 启动它,这会导致 Play.isProd 返回 true ,或者activator run / activator test,这会导致 Play.isProd 返回 false

我们想知道是否有什么方法可以启动打包的应用程序并能够控制Play.isProd的状态,这样我们就可以在我们的测试中运行一个测试实例服务器,以及我们产品服务器上的产品实例。

我们当前的解决方法是在 application.conf 中进行自定义设置,并使用 Play.current.configuration.getBoolean("play_mode").getOrElse(true) 对其进行检查。我觉得我们应该改用内置功能。

【问题讨论】:

  • 关于如何运行dist 任务以生成用于在DEV 模式下运行应用程序的二进制文件的任何更新?

标签: scala playframework typesafe-activator


【解决方案1】:

不确定我是否完全理解您的问题,但这里是。

我自发的建议是使用环境变量,因为这总是将配置与代码分离,并将特定配置绑定到机器/环境。

但是要回答你的问题:)

可以有一个额外的 .conf 文件并将其设置为在启动/运行时使用:

activator start "-Dconfig.resource=dev.conf"

如果这是临时修复,您可以直接从命令行覆盖特定的配置键:

activator start "-Dapplication.some.conf=override -Ddb.default.password=some_pass"

// This might even work, not sure
activator start "-Dapplication.mode=DEV"

阅读更多:

https://www.playframework.com/documentation/2.3.x/ProductionConfiguration

【讨论】:

    【解决方案2】:

    似乎 isProd 标志的含义与我们的假设完全不同:它只控制应用程序是否在有或没有类重新加载的情况下运行。换句话说,我们的“解决方法”实际上是获得我们想要的东西的正确方法。

    我会暂时关闭它,以防有人要添加更多内容,但据我所知,它现在可以关闭了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多