module Cre

Constants

VERSION

Public Class Methods

dig(*credentials) click to toggle source

Fetching Rails encrypted credentials with:

`Rails.application.credentials.dig(:environment, :credential)`

Is too long for my taste. Using Cre.dig is a lot shorter:

`Cre.dig(:environment, :credential)`

By default Rails.env finds the default environment for us when none is specified and it is called with the credential only:

`Cre.dig(:password)`

The dig method here is just an aesthetic thing to keep us in context. TODO: Add support for deeply nested credentials.

# File lib/cre.rb, line 16
def self.dig(*credentials)
  env, credentials = if defined_environments.include? credentials[0].to_sym
    [credentials[0].to_sym, credentials[1..-1].flatten.map(&:to_sym)]
  else
    [Rails.env.to_sym, [credentials].flatten.map(&:to_sym)]
  end
  Rails.application.credentials.dig(env, *credentials)
end

Private Class Methods

defined_environments() click to toggle source
# File lib/cre.rb, line 27
def self.defined_environments
  Dir.entries(Rails.root.join('config','environments').to_s).grep(/\.rb$/).map{ |filename| File.basename(filename, '.rb').to_sym }
end