Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Groovy] 실행 환경에 맞게 config 설정 Computer & Program

Groovy에는 간편하게 config를 읽어올 수 있는 ConfigSlurper가 있다.
간단하니 예제로 따라하기!! 아래와 같은 설정 파일을 만들어 둔다.

/conf/config.groovy
mongo {
db = 'testdb'
}

environments {
    test {
        mongo {
            host = '127.0.0.1'
            port = 27017
        }
    }

    development {
        mongo {
            host = '10.20.10.10'
            port = 27017
        }
    }

    production {
        mongo {
            host = 'localhost'
            port = 27017
        }
    }
}


/test.groovy
def config

config = new ConfigSlurper('test').parse(new File('conf/config.groovy').toURI().toURL())
println '== Test environment'
println "host: ${config.mongo.host}"
println "port: ${config.mongo.port}"
println "db: ${config.mongo.db}"

config = new ConfigSlurper('development').parse(new File('conf/config.groovy').toURI().toURL())
println '== Development environment'
println "host: ${config.mongo.host}"
println "port: ${config.mongo.port}"
println "db: ${config.mongo.db}"

config = new ConfigSlurper('production').parse(new File('conf/config.groovy').toURI().toURL())
println '== Production environment'
println "host: ${config.mongo.host}"
println "port: ${config.mongo.port}"
println "db: ${config.mongo.db}"


주의 깊게 볼 것은 설정 파일의 environments 라는 부분이다. 이 부분을 사용해 1개의 설정 파일에서 실행 환경별로 필요한 설정을 구분해서 넣을 수 있다. 테스트 환경이라면 'test'를, 개발 서버라면 'development'를, 상용 서버라면 'production'을 사용하면 된다. 소스 코드의 config.mongo.host에는, 테스트환경('test')인 경우는 envirionments.test.mongo.host를 사용하게 되고, 상용환경('production')인 경우는 envirionments.production.mongo.host를 사용하게 된다.

$ groovy test.groovy
== Test environment
host: 127.0.0.1
port: 27017
db: testdb
== Development environment
host: 10.20.10.10
port: 27017
db: testdb
== Production environment
host: localhost
port: 27017
db: testdb


ConfigSlurper를 잘 이용하면 이렇게도 사용할 수 있다. groovy 코드를 실행하는 환경을 system property로 설정해 줄 수도 있다. (Groovy도 node.js의 process.env.NODE_ENV처럼 실행시킬 때 설정해 주는 환경이 있을건데 아직 잘 모르겠다. TㅅT Grails에는 -Dgrails.env 설정이 있는듯..)

config = new ConfigSlurper(System.getProperty('env'))
    .parse(new File('conf/config.groovy').toURI().toURL())
println "host: ${config.mongo.host}"
println "port: ${config.mongo.port}"
println "db: ${config.mongo.db}"


$ groovy -Denv=test test.groovy
host: 10.20.10.20
port: 27017
db: testdb
$ groovy -Denv=development test.groovy
host: 10.20.10.10
port: 27017
db: testdb
$ groovy -Denv=production test.groovy
host: localhost
port: 27017
db: testdb


- 참고
Groovy - ConfigSlurper
Grails - 4 Configuration

덧글

댓글 입력 영역

Google AdSense (text/image)