Grails 1.x では、grails.config.locationsディレクティブを設定することにより、外部構成ファイルを使用できます。(JNDI をセットアップせずに) Datasource.groovy でデータベース構成を外部化するために利用できる同様のアプローチはありますか?
アプリケーションの外部の単純な構成ファイルで DB 資格情報を構成できると便利です。
前もって感謝します!
Grails 1.x では、grails.config.locationsディレクティブを設定することにより、外部構成ファイルを使用できます。(JNDI をセットアップせずに) Datasource.groovy でデータベース構成を外部化するために利用できる同様のアプローチはありますか?
アプリケーションの外部の単純な構成ファイルで DB 資格情報を構成できると便利です。
前もって感謝します!
データソース構成を外部化する方法として、grails.config.locations で指定されたプロパティ ファイルを使用できます。以下は、私が通常 Grails プロジェクトをセットアップする方法です。
私の DataSource.groovy では、本番環境用にこれを指定します。
....
....
production {
dataSource {
dbCreate = "update"
driverClassName = "com.myorg.jdbcDriverNotExists"
url = ""
username = ""
password = ""
}
}
....
....
Config.groovy で外部プロパティ ファイルを指定します。
grails.config.locations = [ "classpath:app-config.properties"]
プロパティ ファイル (grails-app/conf/ に保存) で、実際のデータソース情報を指定します。
dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@host:port:sid
dataSource.username=sa
dataSource.password=secret
また、Config.groovy にある他の値をオーバーライドする方法として、プロパティ ファイルを使用します。アプリのデプロイ時にデータソース情報を変更する必要がある場合は、/WEB-INF/classes/app-config.properties ファイルを編集して再起動するだけです。
上記の答えは、実際には構成を外部化するものではありません。彼は近くにいますが、構成はまだアプリケーションに存在しています。アプリケーション/サーバーの起動時にJVM環境変数を使用して、外部構成が存在するアプリケーションの外部の場所を指します。config.groovyファイルの環境変数を読み取り、それを使用して外部構成ファイルを取得します。このようなもの:
def extConfig = System.properties.getProperty('ENVVAR');
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"]
私にとってこれはうまくいきません。環境変数を取得します。
より良い使用:
System.getenv().get("ENVVAR").toString()