Play Framework 2.1.0 版文档状态:
默认情况下使用基于 rhino 的优化器,可以通过 requireNativePath 设置为性能配置原生节点版本
但是没有关于如何/在哪里实际执行此操作的示例。当我将我的应用程序部署到 Heroku 时,优化步骤需要 10 分钟以上,并导致构建经常失败。谁能指出我应该如何设置这个 requireNativePath 标志?
Play Framework 2.1.0 版文档状态:
默认情况下使用基于 rhino 的优化器,可以通过 requireNativePath 设置为性能配置原生节点版本
但是没有关于如何/在哪里实际执行此操作的示例。当我将我的应用程序部署到 Heroku 时,优化步骤需要 10 分钟以上,并导致构建经常失败。谁能指出我应该如何设置这个 requireNativePath 标志?
没有简单的方法可以requireNativePath
在 Heroku 上工作,因为您必须分叉和修改 scala buildpack 才能获得改进。但是,按照以下步骤,您将优化 10 倍以上的速度(部署需要大约 700 多秒,现在只需要大约 65 秒)
继续 fork scala buildpack 并从此处应用修改。这些修改本质上是安装 node 和 npm,然后安装 requireJS node_module。
将修改添加到 buildpack 后,您必须通过 CLI 告诉 heroku 使用您的自定义 buildpack
$ heroku config:set BUILDPACK_URL=https://github.com/<your user>/heroku-buildpack-scala
接下来,Build.scala
通过添加此行来修改您的项目设置
requireNativePath := scala.util.Properties.envOrNone("REQUIREJS_PATH")
接下来在 heroku 上为REQUIREJS_PATH
via CLI 设置一个配置变量。这是 buildpack 修改将安装 r.js 文件的路径:
$ heroku config:set REQUIREJS_PATH=/tmp/scala_buildpack_build_dir/vendor/node/bin/r.js
接下来,您必须user-env-compile
从 heroku 启用实验室。这将允许您从编译过程中访问任何环境变量。
$ heroku labs:enable user-env-compile
完成上述步骤后,您现在可以将最新更改推送到 heroku,您会注意到优化步骤所需的时间减少了 10 倍
将此添加到项目设置中:
requireNativePath := Some("/usr/local/lib/node_modules/requirejs/bin/r.js")
您还可以查看此示例应用程序:https ://github.com/magro/play2-java-computer-database/tree/master/play-coda