昨天我将更新推送到我的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构建没有报告任何错误,只是通过。
我正在使用游戏2.2.2。我的应用程序包含一个git子模块,是一个sbt多项目构建。 Heroku虽然检测到git子模块。如果多项目是问题,我预计会出现构建错误或ClassNotFoundExceptions
。
答案 0 :(得分:0)
答案很简单。在2.2之前的版本中,play框架在位置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
文件未找到错误。
heroku-repo插件让我清除构建缓存,这会导致找不到target/start
文件错误,这会让解决方案出现。