AWS Elastic Beanstalk で grails アプリケーションを実行しています。コマンド ライン パラメーターを介して DB 認証資格情報を渡し、System.getProperty() を介してそれらを取得します。grails 2.3.x の DataSource.groovy では、次のように動作しました。
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
driverClassName = "org.postgresql.Driver"
dialect = "net.kaleidos.hibernate.PostgresqlExtensionsDialect"
url = System.getProperty("JDBC_CONNECTION_STRING")
username = System.getProperty("PARAM1")
password = System.getProperty("PARAM2")
}
}
}
grails 2.4.x では、フィールド url、username、および password が PostgreSQL ドライバーによって評価されるときに、System.getProperty() メソッドの評価結果ではなく、デフォルト値が返されます。as String を明示的にキャストすると、状況が改善されるようです。
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
driverClassName = "org.postgresql.Driver"
dialect = "net.kaleidos.hibernate.PostgresqlExtensionsDialect"
url = System.getProperty("JDBC_CONNECTION_STRING") as String
username = System.getProperty("PARAM1") as String
password = System.getProperty("PARAM2") as String
}
}
}