Как добавить папку и ее содержимое в стандартные пути Playframework и Heroku? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть приложение Scala Play Framework 2.7.x, которое я развернул в Heroku. Я использую Lucene для индексирования WebApp, и поскольку в Lucene нет JdbcDirectory, мне нужно использовать вместо них FSDirectory, что приводит к проблемам с Heroku, потому что я не могу сгенерировать индексные файлы в $APP_HOME/lucene-index/* в Heroku, иначебудет уничтожен каждый раз. Это приводит меня к двум возможным решениям, и это более простое:

  1. Сгенерируйте $APP_HOME/lucene-index локально перед развертыванием и сохраните его в GIT, эта папка будет на том же уровне, что и $APP_HOME/app и$APP_HOME/public.
  2. Интегрируйте новую нестандартную папку Play $APP_HOME/lucene-index, чтобы она была скопирована Heroku (цель этого OP).
  3. При запуске приложение проверяет эту папку и, еслине существует (локальный регистр) генерируется в противном случае он открывает его (регистр Heroku).

Нужно ли сделать что-то особенное на # 2, чтобы Heroku распознал $APP_HOME/lucene-index/ как нужную папкуупаковываться вместе с приложением? Например, я не хотел бы ставить $APP_HOME/lucene-index/ в $APP_HOME/conf/, чтобы это работало.

Здесь я нахожу Анатомию приложения Play 2.7.x , но на нем нет словкак добавить дополнительные пути к папкам.

1 Ответ

1 голос
/ 09 октября 2019

Решение, которое я получил после этого, заключалось в том, чтобы включить папку ./lucene-index в качестве части дистрибутива Play. Это достигается путем изменения файла build.sbt, добавив:

//********************************************************
// Add lucene-index to the dist
//********************************************************

import com.typesafe.sbt.packager.MappingsHelper._
mappings in Universal ++= directory(baseDirectory.value / "lucene-index")

Теперь он развертывается в Heroku и все работает хорошо.

...