Mel*_*emi 14 unix ruby-on-rails environment-variables osx-server
在Rails服务器上试验MongoID,并对如何/在何处设置环境变量感到困惑.
config/mongoid.yml 默认模板提供:
defaults: &defaults
host: localhost
...
# set these environment variables on your prod server
production:
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
Run Code Online (Sandbox Code Playgroud)
我的问题是这些是在Rails中设置的吗?或者他们是在系统级别?如果是这样设置的地方/如何设置,以便不需要登录任何用户帐户才能使它们有效?
dan*_*ich 14
ENV哈希将具有来自rails进程启动时的系统环境的值.
这些可以在启动服务器或程序之前在命令行上设置.例如在bash中:
export MONGOID_USERNAME='username'
Run Code Online (Sandbox Code Playgroud)
这些只对shell的生命周期有好处,除非您将它们添加到您的配置文件中,但您的Web服务器可能不会使用该配置文件,因此它仅对本地开发有用.
例如,也可以使用SetEnv在Apache中设置它们.例如:
<Location /app >
SetEnv MONGOID_HOST 'localhost'
SetEnv MONGOID_PORT '8883'
SetEnv MONGOID_USERNAME 'username'
</Location>
Run Code Online (Sandbox Code Playgroud)
这可能是您的apache配置中SetEnv合法的任何地方,这与您的应用程序所在的上下文相同.
关于您对最佳实践的评论,有些人在源代码管理中放置了一个示例yml配置文件,并忽略config/*.yml源代码管理中的文件.克隆存储库时,将示例复制并更正为正确的值是设置的一部分,例如运行rake tmp:create来创建tmp文件夹结构.