ruby on rails - Using Figaro and Secrets.yml to Manage Env Variables -
i have rails 4.1 app , i'm trying organize env variables. of right have secrets.yml file in config/ folder. installed figaro gem. goal have env variables in application.yml (not checked git) file , use secrets.yml (checked git) file map variables appliation.yml application. when print files using rails.application.secrets shows hashes this:
:salesforce_username=>"env['salesforce_username']" none of external services working env variables setup. when view traces, env['account_id'] being passed through in requests this:
v2/accounts/env['account_id']/envelopes in addition, cannot access env variables using rails.application.secrets.account_id in app.
secrets.yml
development: account_id: <%= env['account_id'] %> aplication.yml
development: account_id: "123456" application.rb
# preload tokens in application.yml local env config = yaml.load(file.read(file.expand_path('../application.yml', __file__))) config.merge! config.fetch(rails.env, {}) config.each |key, value| env[key] = value.to_s unless value.kind_of? hash end
the gem provides generator:
$ rails generate figaro:install the generator creates config/application.yml file , modifies .gitignore file prevent file being checked git repository.
you can add environment variables key/value pairs config/application.yml:
gmail_username: your_username the environment variables available anywhere in application env variables:
env["gmail_username"] this gives convenience of using same variables in code whether set unix shell or figaro gem’s config/application.yml. variables in config/application.yml file override environment variables set in unix shell.
in tests or other situations env variables might not appropriate, can access configuration values figaro method calls:
figaro.env.gmail_username use syntax setting different credentials in development, test, or production environments:
hello: world development: hello: developers production: hello: users in case, env["hello"] produce “developers” in development, “users” in production , “world” otherwise.
Comments
Post a Comment