Embedded ruby in database.yml config file

I have noticed in Rails 4.2 the following in rails console

#database.yml

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

development_replica:
<<: *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
ActiveRecord::Base.establish_connection(:development_replica)

Advice or thoughts?
Thanks

On Thursday, April 2, 2015 at 9:15:00 AM UTC+1, Stuart Fraser wrote:

the password is nil

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

Is this expected behaviour?

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

Fred

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.

Thanks

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs