Wonder Credentials

Helpers para Rails Credentials API.

Instalação

Adicione essa linha ao Gemfile:

gem 'wonder_credentials'

Então execute:

$ bundle

Uso

Altere as credenciais do Rails, organizando-a por ambientes:

$ rails credentials:edit
# config/credentials.yml.enc

default:                  &default
  AWS:
    ACCESS_KEY_ID:        &default_aws_access_key_id
      "shared_access_key_value"
    SECRET_ACCESS_KEY:    &default_aws_secret_access_key
      "shared_secrets"

    REGION:               &default_aws_region
      "sa-east-1"

    SQS_REGION:           *default_aws_region
    SNS_REGION:           *default_aws_region

development:
  <<:                     *default

test:
  <<:                     *default

production:
  <<:                     *default
  AWS:
    ACCESS_KEY_ID:        "real_access_key"
    SECRET_ACCESS_KEY:    "real_secrets"

Em development/test:

WonderCredentials.get('AWS.ACCESS_KEY_ID')
# => "shared_access_key_value"

Em production:

WonderCredentials.get('AWS.ACCESS_KEY_ID')
# => "real_access_key"
Hash
credentials = WonderCredentials.get(
  access_key_id: 'AWS.ACCESS_KEY_ID',
  secret_access_key: 'AWS.SECRET_ACCESS_KEY',
  region: 'AWS.REGION'
)
# => { access_key_id: 'shared_access_key_value', secret_access_key: 'shared_secrets', region: 'sa-east-1' }

Aws.configure(credentials)

Também funciona em qualquer nível do hash.

WonderCredentials.get({ a: { b: { c: 'AWS.ACCESS_KEY_ID ' } } })
# => { a: { b: { c: 'shared_access_key_value' } } }

Aws.configure(credentials)
Array
WonderCredentials.get(['AWS.ACCESS_KEY_ID', 'AWS.SECRET_ACCESS_KEY'])

# => ['shared_access_key_value', 'shared_secrets']

Fallback

Environment
WonderCredentials.get('AWS.SQS_ACCESS_KEY_ID', env: true)

# => Credentials['AWS.SQS_ACCESS_KEY_ID'] ou ENV['AWS.SQS_ACCESS_KEY_ID'] ou null
Default Value
WonderCredentials.get('AWS.SQS_ACCESS_KEY_ID', env: true, default: 'key not found')

# => Credentials['AWS.SQS_ACCESS_KEY_ID'] ou ENV['AWS.SQS_ACCESS_KEY_ID'] ou 'key not found'