Skip to content

Commit

Permalink
Add explicit implementation of Config::Options#as_json (rubyconfig#292)
Browse files Browse the repository at this point in the history
  • Loading branch information
cjlarose authored and ippachi committed Oct 3, 2021
1 parent 829b9c7 commit 5ee6914
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
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

0 comments on commit 5ee6914

Please sign in to comment.