【问题标题】:Heroku does not seem to run most recent version of deployed play applicationHeroku 似乎没有运行最新版本的已部署播放应用程序
【发布时间】:2014-04-20 08:41:03
【问题描述】:

昨天我向我的 Heroku 应用程序推送了更新,但在线版本似乎没有执行最新的代码。具体来说,我添加的新路线导致“找不到操作”错误visible here 并且Akka job I schedule in Global.onStart 未启动。它至少没有写入日志。

我的conf/routes 文件包含行

GET     /json/matches               controllers.FeedDaemon.matches()

corresponding Controller exists 并执行此操作

def matches = Action { implicit request =>
    Ok(Cache.get(keyMatches) match {
      case Some(o)  => o.asInstanceOf[String]
      case None => ""
    })
}

不用说,它在本地工作。 heroku 构建没有报告任何错误,只是通过了。

我正在使用 play 2.2.2。我的应用程序包含一个 git 子模块,并且是一个 sbt 多项目构建。 Heroku 虽然检测到 git 子模块。如果多项目是问题所在,我预计会出现构建错误或ClassNotFoundExceptions

【问题讨论】:

    标签: git scala heroku playframework playframework-2.2


    【解决方案1】:

    答案很简单。在 2.2 之前的版本中,播放框架在位置 target/start 创建启动脚本,因此您的 Heroku Procfile 看起来像

    web: target/start -Dhttp.port=$PORT $JAVA_OPTS
    

    这在 Play 2.2 中发生了变化,脚本现在位于位置 target/universal/stage/bin/foo,因此您的 Procfile 应该如下所示

    web: target/universal/stage/bin/foo -Dhttp.port=$PORT $JAVA_OPTS
    

    这在SO answer中也有解释

    在我的情况下,旧应用程序已启动,因为从未清理过构建输出,因此我在构建新应用程序后成功启动了旧版本,而不是收到 target/start file not found 错误。

    heroku-repo 插件让我清除了构建缓存,导致target/start 文件未找到错误,这让我找到了解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2016-11-29
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 2013-10-29
      相关资源
      最近更新 更多