-
Notifications
You must be signed in to change notification settings - Fork 353
Description
My application uses the opensearch-ruby
gem which in turn uses multi_json
. When I upgrade my application from json 2.10.2 to 2.11.0 (or 2.11.1), I get failures:
NameError:
uninitialized constant JSON::PRETTY_STATE_PROTOTYPE
# /usr/local/rvm/gems/ruby-3.2.8/gems/multi_json-1.15.0/lib/multi_json/adapters/json_common.rb:18:in `dump'
# /usr/local/rvm/gems/ruby-3.2.8/gems/multi_json-1.15.0/lib/multi_json/adapter.rb:25:in `dump'
# /usr/local/rvm/gems/ruby-3.2.8/gems/multi_json-1.15.0/lib/multi_json.rb:139:in `dump'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/transport/transport/serializer/multi_json.rb:55:in `dump'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/transport/transport/base.rb:218:in `__trace'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/transport/transport/base.rb:366:in `perform_request'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/transport/transport/http/faraday.rb:45:in `perform_request'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/transport/client.rb:191:in `perform_request'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch.rb:92:in `open_search_validation_request'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch.rb:59:in `verify_open_search'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch.rb:47:in `method_missing'
# /usr/local/rvm/gems/ruby-3.2.8/gems/opensearch-ruby-3.4.0/lib/opensearch/api/actions/delete_by_query.rb:90:in `delete_by_query'
It appears this is caused by 18e5c3c.
Given that the removed constant is used in a dependency-of-a-dependency, there's not really a way I can fix this on my side (although I can obviously stick with json 2.10.2, and I will for now).
Would you consider restoring JSON::PRETTY_STATE_PROTOTYPE
since it is in fact used by multi_json
?
On a side note: the 2.10.0 release also broke multi_json
compatibility. I wish my dependencies didn't use multi_json
but they do (and it's apparently quite well used as it has almost a billion downloads...). Given that, it might be worth considering adding something to your CI build that runs the latest released version of multi_json
against your code, to surface these issues sooner.