embedded ruby in database.yml config file

I have noticed in Rails 4.2 the following in rails console


<<: *default
database: project_development
username: root
password: <%= ENV[‘PASSWORD’] %>

<<: *default
database: replicat_db
username: replica_user
password: <%= ENV[‘REPLICA_PASSWORD’] %>


If I look at ActiveRecord::Base.configurations[‘development’] the password set

If I look at ActiveRecord::Base.configurations[‘development_replicate’] the password is nil

This happens with any embedded ruby that is not in the Rails.env configuration block.

Is this expected behaviour?

To establish another connection I am supposed to do the following but the embedded ruby isn’t evaled


Advice or thoughts?


The erb step happens before YAML parsing so that sounds unlikely. Are you sure that environment variable is set.


I’ve decided to use dotenv-rails and this seems to have remedied things. Perhaps it was an eval order issue.

I did have ENV populated with all values I expected to see, they just weren’t in the configurations.


So I worked out that Spring was my problem. If the ENV[‘DATABASE_URL’] or any other setting is not set then Spring still starts and keeps running with things unset.

I lost far too much time wondering why I could see my ENV variables in Rails Console but database.yml wasn’t getting set.

spring stop