Module: Ironclad

Defined in:
lib/ironclad.rb,
lib/ironclad/cli.rb,
lib/ironclad/diff.rb,
lib/ironclad/cache.rb,
lib/ironclad/config.rb,
lib/ironclad/source.rb,
lib/ironclad/railtie.rb,
lib/ironclad/version.rb,
lib/ironclad/key_store.rb,
lib/ironclad/cache/null.rb,
lib/ironclad/capistrano.rb,
lib/ironclad/cache/keyctl.rb,
lib/ironclad/cache/keychain.rb,
lib/ironclad/source/one_password.rb,
lib/generators/ironclad/install_generator.rb

Overview

Sources Rails credential keys from a secrets manager, cached in the local OS keystore.

Defined Under Namespace

Modules: Cache, Capistrano, Diff, Generators, Source Classes: CLI, Config, Error, KeyStore, Railtie

Constant Summary collapse

GIT_DIFF_DRIVER =
'rails_credentials'
DIFF_COMMAND =
'bin/ironclad diff'
VERSION =
'0.4.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.config_pathObject



22
23
24
# File 'lib/ironclad.rb', line 22

def config_path
  @config_path ||= File.join(Dir.pwd, 'config', 'ironclad.yml')
end

Class Method Details

.configObject



30
31
32
# File 'lib/ironclad.rb', line 30

def config
  @config ||= Config.load(config_path)
end

.configure_git_diff!(command = DIFF_COMMAND) ⇒ Object



44
45
46
47
48
49
# File 'lib/ironclad.rb', line 44

def configure_git_diff!(command = DIFF_COMMAND)
  return unless enrolled_in_git_diff?

  system('git', 'config', "diff.#{GIT_DIFF_DRIVER}.textconv", command,
         %i[out err] => File::NULL)
end

.configured?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/ironclad.rb', line 26

def configured?
  File.exist?(config_path)
end

.key(environment = 'default', refresh: false) ⇒ Object

Return the credentials key for an environment, using the read-through cache. Pass refresh: true to bypass the cache after a key rotation.



40
41
42
# File 'lib/ironclad.rb', line 40

def key(environment = 'default', refresh: false)
  store.key(environment.to_s, refresh: refresh)
end

.reset!Object

Reset memoized state (mainly for tests).



52
53
54
55
# File 'lib/ironclad.rb', line 52

def reset!
  @config = nil
  @store = nil
end

.storeObject



34
35
36
# File 'lib/ironclad.rb', line 34

def store
  @store ||= KeyStore.new(config)
end