在Config.groovy中,我需要$ userHome变量。
它可以在我的开发机器上工作,实际上我使用以下命令:
environments {
development {
grails.plugin.elfinder.rootDir =
"${userHome}/docm_patients_doc/{patientcf}/"
...
}
production {
grails.plugin.elfinder.rootDir =
"${userHome}/docm_patients_doc/{patientcf}/"
...
}
}
要么
environments {
development {
grails.plugin.elfinder.rootDir =
"${System.properties.'user.home'}/docm_patients_doc/{patientcf}/"
...
}
production {
grails.plugin.elfinder.rootDir =
"${System.properties.'user.home'}/docm_patients_doc/{patientcf}/"
...
}
}
在我的生产机器中,$ userHome似乎是
usr/share/tomcat7
,而不是正确的Home路径。为什么我有这种行为?
最佳答案
这可能是正确的行为-看起来您的生产Tomcat正在以其主目录为/usr/share/tomcat7
的特定系统用户(可能称为tomcat7或类似名称)运行。
如果要为开发和生产系统的配置选项设置不同的值,则执行此操作的标准方法是使用 environments
mechanism
// standard value
grails.plugin.elfinder.rootDir = "${userHome}/docm_patients_doc/{patientcf}/"
environments {
production {
// override the value for the production environment
grails.plugin.elfinder.rootDir = "/data/docm_patients_doc/{patientcf}/"
}
}
现在处于开发模式下,它将使用涉及
${userHome}
的标准路径,但是在生产模式下运行时(当您构建grails prod war
并将其部署到tomcat时),它将使用environments
块内部的设置。您也可以在development
内有一个environments
块,用于仅适用于开发模式的设置。注意
Config.groovy
是从上到下解析的,因此常规设置必须在特定于环境的设置之前。关于grails - grails userHome变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21314368/