2015-09-20 7 views
1

У меня есть приложение для платформы Play в Scala. Он использует базу данных, и мне нужно загрузить данные в базу данных до начала первого запуска приложения. Я думал, что могу добавить класс с основным классом в приложении и начать его, как play -main loadDataClass. Кажется, что он работает, но как только я получаю доступ к Play.current.configuration Мне это нужно для доступа к учетным данным. Я получаю эту ошибку:Play framework и небольшое приложение

Exception in thread "main" java.lang.RuntimeException: There is no started application

Прошу совета, как это реализовать. Должен ли я как-то запустить приложение?

ответ

0

Вам необходимо создать модуль для загрузки данных при запуске. В режиме производства (запуск активатора) он запускается после запуска приложения, в режиме разработки (активатор запускает) он запускается после первого запроса на сервер.

Создать модуль

app/modules/PrepareDatabaseModule.scala: 

внутри этого модуля

package modules 

import com.google.inject.AbstractModule 

trait PrepareDatabase {} 

class PrepareDatabaseClass extends PrepareDatabase { 
    initialize() 
    def initialize() = { 
    // Load your data here 
    } 
} 

class PrepareDatabaseModule extends AbstractModule { 
    def configure() = { 
    bind(classOf[PrepareDatabase]) 
     .to(classOf[PrepareDatabaseClass]).asEagerSingleton 
    } 
} 

в конфе/application.conf:

play.modules.enabled += "modules.PrepareDatabaseModule" 
+0

Я хочу, чтобы вызвать код перед использованием моего приложения. Я хочу запустить это из командной строки. Возможно ли это в Play или я должен сделать для этого отдельное приложение? – Skoky

+0

Для меня сценарий звучит очень странно. Я хотел бы создать специальное приложение java для этого, как вы описываете, с помощью основного метода и запустить его из сценария оболочки, а затем запустить игру. Я по-прежнему считаю, что ваша задача может быть решена с помощью плагина. –