jhs*_*701 11 database passwords ruby-on-rails
如您所知,您必须在config/database.yml文件中为数据库提供正确的数据库名称,用户名和密码,否则您的Rails应用程序将拒绝工作.
在默认设置中,您的密码在config/database.yml文件中以纯文本格式显示.如果您的应用程序位于免费的GitHub存储库中,那么您的密码就是公共信息.对于严肃的应用程序,这不是一个可行的选择.(对于教程练习,没关系,只要您不将此密码用于其他任何内容.)
到目前为止,我有一个对我有用的解决方案,但我想知道是否有更好的东西.您可以在https://github.com/jhsu802701/bsf上查看我部署的示例.
我所做的是设置config/database.yml文件,以编程方式提供开发环境的用户名和密码.对于开发环境,我将命令添加到config/database.yml脚本以获取开发环境用户名(这是我使用的Debian Linux安装程序的常规用户名)和空白密码.(我给我的用户名Postgres超级用户权限.)对于生产环境,我在部署脚本中添加一个命令,该命令从我帐户上其他位置的文件中获取用户名和密码,并将此信息写入config/database.yml文件.
有更好的解决方案吗?
是否有一个Ruby宝石涵盖了这个?如果没有,我正在考虑创建一个.
小智 18
heroku的方式,以及绝大多数其他铁路商店都使用ENV变量
将两个变量导出到您的环境中,
export POSTGRES_USERNAME='username'
export POSTGRES_PASSWORD='password'
Run Code Online (Sandbox Code Playgroud)
然后在你的database.yml文件中你可以做到
username: <%= ENV['POSTGRES_USERNAME'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
Run Code Online (Sandbox Code Playgroud)
小智 5
这就是我让它工作的方式:
在终端/cmd上:
heroku config:set YOUR_DATABASE_PASSWORD=passywordy
Run Code Online (Sandbox Code Playgroud)
然后,在 /config/database.yml 文件中;
production:
<<: *default
password: <%= ENV['YOUR_DATABASE_PASSWORD'] %>
Run Code Online (Sandbox Code Playgroud)
(这个密码区是我用 rails new my_app -d postgresql 时自动生成的)