Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add explicit implementation of Config::Options#as_json #292

Merged
merged 2 commits into from
Dec 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

* Added alias to_h for to_hash ([#277](https://github.com/railsconfig/config/issues/277))
* Prevent unnecessary doubled loading of environment variables ([#291](https://github.com/rubyconfig/config/pull/291))
* Return `Hash` from `Config::Options#as_json` instead of `Array` of pairs when using ActiveSupport Core Extensions ([#292](https://github.com/rubyconfig/config/pull/292))

### Changes

Expand Down
4 changes: 4 additions & 0 deletions lib/config/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ def to_json(*args)
to_hash.to_json(*args)
end

def as_json(options = nil)
to_hash.as_json(options)
end

def merge!(hash)
current = to_hash
DeepMerge.deep_merge!(
Expand Down
15 changes: 15 additions & 0 deletions spec/options_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -224,4 +224,19 @@

end

context 'when calling #as_json' do
it 'should return a Hash of the keys and values' do
unless defined?(::Rails)
skip <<~REASON
Config::Options#as_json raises a runtime error unless Active Support
Core Extensions are loaded. We don't expect users to call this method
at all if they're not using AS, so we disable this test except when
running the suite against Rails.
REASON
end

options = Config::Options.new(foo: :bar)
expect(options.as_json).to eq({ 'foo' => 'bar' })
end
end
end