Расширение нескольких источников данных Grails в DataSources.groovy? - PullRequest
2 голосов
/ 17 марта 2011

Каждая среда, которую вы определяете в DataSource.groovy, расширяет базовое определение dataSource в корне файла, вне сред.

У меня есть две конкретные конфигурации, которые мне нужно применить к ряду различныхсреды, которые имеют незначительные изменения, специфичные для окружающей среды.На самом деле мне нужны два «базовых определения» или какой-то способ расширить существующие определения.

Как мне сделать то, что я пытаюсь сделать?

dataSource1 {
    dbCreate = "update"
    dialect = org.hibernate.dialect.Oracle10gDialect
    pooled = false
    jndiName = "java:something"
}
dataSource2 {
            pooled = true
            driverClassName = "org.hsqldb.jdbcDriver"
            username = "sa"
            password = ""
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
}

// environment specific settings
environments {
    //extend datasource1
    production{
    }
    //extend datasource2
    development{
    }
}

Ответы [ 3 ]

4 голосов
/ 17 марта 2011

Следующее присваивает dataSource1 и dataSource2 Замыкание (обратите внимание на =), и вы можете затем вызывать их в своих блоках среды.

dataSource1 = {
    dbCreate = "update"
    driverClassName = "org.hsqldb.jdbcDriver"
    dialect = org.hibernate.dialect.Oracle10gDialect
    pooled = false
    jndiName = "java:something"
}

dataSource2 = {
            pooled = true
            driverClassName = "org.hsqldb.jdbcDriver"
            username = "sa"
            password = ""
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
}

environments {
    production {
        dataSource {
            dataSource1.call()
        }
    }
    development {
        dataSource {
            dataSource2.call()
        }
    }
}
0 голосов
/ 17 марта 2011

Вы можете использовать внешний файл конфигурации для Grails (вместо Config.groovy) и определить источник данных внутри него. Для этого мы можем написать следующий код в Config.groovy

if (System.properties["${appName}.config.location"]) {
    grails.config.locations = ["file:" + System.properties["${appName}.config.location"]]
}

Затем в развернутой среде определите переменную среды: ${appName}.config.location. Эта переменная окружения указывает на внешний файл конфигурации.

0 голосов
/ 17 марта 2011

Закрытие источника данных может существовать в замыканиях environemnts ...

environments {
   production {
      dataSource {
         dbCreate = "update"
         dialect = org.hibernate.dialect.Oracle10gDialect
         pooled = false
         jndiName = "java:something"
      }
   }
}
...