Skip to content

Commit e508d90

Browse files
committed
feat: add rails crendentails support
1 parent ddd3ed6 commit e508d90

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ After installing `Config` in Rails, you will find automatically generated file t
274274
* `evaluate_erb_in_yaml` - evaluate ERB in YAML config files. Set to false if the config file contains ERB that should not be evaluated at load time. Default: `true`
275275
* `file_name` - name of the file to store general keys accessible in all environments. Default: `'settings'` - located at `config/settings.yml`
276276
* `dir_name` - name of the directory to store environment-specific files. Default: `'settings'` - located at `config/settings/`
277+
* `use_rails_credentials` - evaluate Rails credentials if loaded with `RAILS_MASTER_KEY` or `config/master.key`
277278

278279
### Merge customization
279280

lib/config.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module Config
2929
validation_contract: nil,
3030
evaluate_erb_in_yaml: true,
3131
environment: nil
32+
use_rails_credentials: false
3233
)
3334

3435
def self.setup
@@ -48,6 +49,10 @@ def self.load_files(*sources)
4849

4950
config.add_source!(Sources::EnvSource.new(ENV)) if Config.use_env
5051

52+
if defined?(::Rails::Railtie) && Config.use_rails_credentials
53+
config.add_source!(Rails.application.credentials.to_h.deep_stringify_keys)
54+
end
55+
5156
config.load!
5257
config
5358
end

spec/config_spec.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,5 +480,36 @@
480480
end
481481

482482
end
483+
484+
context 'rails crendentials' do
485+
let(:config) do
486+
Config.use_rails_credentials = true
487+
end
488+
489+
if defined?(::Rails)
490+
it 'shoud have secret_key_base loaded' do
491+
expect(Settings.to_h.keys.include?('secret_key_base')).to eq(true)
492+
end
493+
494+
495+
context 'use_rails_credentials is false' do
496+
let(:config) do
497+
Config.use_rails_credentials = false
498+
end
499+
500+
it 'shoud have secret_key_base loaded' do
501+
expect(Settings.to_h.keys.include?('secret_key_base')).to eq(false)
502+
end
503+
end
504+
end
505+
506+
unless defined?(::Rails)
507+
context 'when not using rails' do
508+
it 'shoud have secret_key_base loaded' do
509+
expect(Settings.to_h.keys.include?('secret_key_base')).to eq(false)
510+
end
511+
end
512+
end
513+
end
483514
end
484515
end

0 commit comments

Comments
 (0)