title: Securely providing the database password in a Rails app
body: <p>As you know, you MUST provide the correct database name, username, and password for the database in the config/database.yml file, or your Rails app will refuse to work.</p>
  
  <p>In the default setup, your password is in plain text in the config/database.yml file.  If your app is on a free GitHub repository, then your password is public information.  This is not a viable option for a serious app.  (It's OK for a tutorial exercise, provided that you don't use this password for anything else.)</p>
  
  <p>I have a solution that has worked for me so far, but I'm wondering if there is something better.  You can see my deployed example at <a href="https://github.com/jhsu802701/bsf">https://github.com/jhsu802701/bsf</a> .</p>
  
  <p>What I do is set up the config/database.yml file to provide the username and password for the development environment programatically.  For the development environment, I add commands to the config/database.yml script to acquire the development environment username (which is my regular username for the Debian Linux setup I use) and a blank password.  (I give my username Postgres superuser privileges.)  For the production environment, I add a command in the deployment script that acquires the username and password from files elsewhere on my account and writes this information to the config/database.yml file.</p>
  
  <p>Is there a better solution?</p>
  
  <p>Is there a Ruby gem that covers this?  If not, I'm thinking of creating one.</p>