Grails在本地的mongodb插件上工作得很好,但是我在AppFog上遇到了一些问题。
对于MongoDB以外的其他数据库,在AppFog上部署Grails的说明非常清楚。文档似乎暗示了MongoDB的自动配置,但如果我将配置设置为以下设置,它将不起作用。
//DataSource.groovy
grails {
mongo {
host = "localhost"
port = 27017
databaseName = "dbname"
}
}自动配置似乎不能用正确的主机名替换localhost。看起来我需要从VCAP_SERVICES中设置值。
发布于 2012-11-15 13:15:46
您是否在Grails项目中安装了CloudFoundry plugin?该插件为Grails应用程序中的MongoDB和其他数据源执行自动重新配置。
如果由于某种原因,您不能或不想使用Grails CloudFoundry插件,那么可以使用cloudfoundry-runtime Java API作为使用环境变量的替代方法。此API允许您访问与存储在环境变量中的信息相同的信息,但它比直接解析环境变量要干净一些。
发布于 2012-11-15 07:47:47
联系支持人员后,答案是使用VCAP_SERVICE环境变量。在网上钻研之后,我想出了如何在配置中检索和使用VCAP_SERVICES。
grails {
def vcap = System.env.VCAP_SERVICES
def credentials = vcap ? grails.converters.JSON.parse(vcap)["mongodb-1.8"][0]["credentials"] : null
mongo {
host = credentials ? credentials.hostname : "localhost"
port = credentials ? credentials.port : "27017"
username = credentials ? credentials.username : null
password = credentials ? credentials.password : null
databaseName = credentials ? credentials.db : "dbname"
}
}https://stackoverflow.com/questions/13389379
复制相似问题