Method: Mongo::Client#update_options
- Defined in:
- lib/mongo/client.rb
#update_options(new_options) ⇒ Hash
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Updates this client’s options from new_options, validating all options.
The new options may be transformed according to various rules. The final hash of options actually applied to the client is returned.
If options fail validation, this method may warn or raise an exception. If this method raises an exception, the client should be discarded (similarly to if a constructor raised an exception).
810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 |
# File 'lib/mongo/client.rb', line 810 def () = @options = self.class.( || {}) ().tap do |opts| # Our options are frozen = @options.dup if [:write] && opts[:write_concern] .delete(:write) end if [:write_concern] && opts[:write] .delete(:write_concern) end .update(opts) @options = .freeze = @options[:auto_encryption_options] != [:auto_encryption_options] # If there are new auto_encryption_options, create a new encrypter. # Otherwise, allow the new client to share an encrypter with the # original client. # # If auto_encryption_options are nil, set @encrypter to nil, but do not # close the encrypter because it may still be used by the original client. if @options[:auto_encryption_options] && @connect_lock.synchronize do build_encrypter end elsif @options[:auto_encryption_options].nil? @connect_lock.synchronize do @encrypter = nil end end end end |