mongoid 9.0.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/Rakefile +44 -21
- data/lib/config/locales/en.yml +4 -0
- data/lib/mongoid/atomic_update_preparer.rb +7 -6
- data/lib/mongoid/config.rb +9 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +3 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -2
- data/lib/mongoid/criteria/findable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -1
- data/lib/mongoid/errors/invalid_around_callback.rb +16 -0
- data/lib/mongoid/errors.rb +1 -0
- data/lib/mongoid/fields.rb +13 -7
- data/lib/mongoid/interceptable.rb +18 -13
- data/lib/mongoid/scopable.rb +7 -1
- data/lib/mongoid/touchable.rb +1 -7
- data/lib/mongoid/version.rb +1 -1
- data/spec/mongoid/association_spec.rb +14 -0
- data/spec/mongoid/attributes_spec.rb +16 -0
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +11 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +11 -0
- data/spec/mongoid/contextual/mongo_spec.rb +72 -3
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/interceptable_spec.rb +31 -0
- data/spec/mongoid/scopable_spec.rb +88 -85
- data/spec/mongoid/touchable_spec.rb +75 -0
- data/spec/mongoid/touchable_spec_models.rb +16 -0
- data/spec/support/models/band.rb +1 -0
- data/spec/support/models/lat_lng.rb +6 -0
- metadata +8 -80
- checksums.yaml.gz.sig +0 -1
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -378
- data/spec/shared/lib/mrss/docker_runner.rb +0 -298
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
- data/spec/shared/lib/mrss/session_registry.rb +0 -69
- data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -37
- data/spec/shared/share/Dockerfile.erb +0 -281
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/config.sh +0 -27
- data/spec/shared/shlib/distro.sh +0 -74
- data/spec/shared/shlib/server.sh +0 -417
- data/spec/shared/shlib/set_env.sh +0 -146
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -1
| @@ -2594,4 +2594,35 @@ describe Mongoid::Interceptable do | |
| 2594 2594 | 
             
                  end
         | 
| 2595 2595 | 
             
                end
         | 
| 2596 2596 | 
             
              end
         | 
| 2597 | 
            +
             | 
| 2598 | 
            +
              context "when around callbacks for embedded children are enabled" do
         | 
| 2599 | 
            +
                config_override :around_callbacks_for_embeds, true
         | 
| 2600 | 
            +
             | 
| 2601 | 
            +
                context "when around callback is defined without a yield" do
         | 
| 2602 | 
            +
                  class Mother
         | 
| 2603 | 
            +
                    include Mongoid::Document
         | 
| 2604 | 
            +
                    embeds_many :daughters, cascade_callbacks: true
         | 
| 2605 | 
            +
                  end
         | 
| 2606 | 
            +
             | 
| 2607 | 
            +
                  class Daughter
         | 
| 2608 | 
            +
                    include Mongoid::Document
         | 
| 2609 | 
            +
                    embedded_in :mother
         | 
| 2610 | 
            +
                    around_save :log_callback
         | 
| 2611 | 
            +
             | 
| 2612 | 
            +
                    private
         | 
| 2613 | 
            +
             | 
| 2614 | 
            +
                    def log_callback
         | 
| 2615 | 
            +
                      logger.debug('callback invoked')
         | 
| 2616 | 
            +
                    end
         | 
| 2617 | 
            +
                  end
         | 
| 2618 | 
            +
             | 
| 2619 | 
            +
                  let(:mom) { Mother.create(daughters: [ Daughter.new, Daughter.new ]) }
         | 
| 2620 | 
            +
             | 
| 2621 | 
            +
                  it "raises an InvalidAroundCallback error" do
         | 
| 2622 | 
            +
                    expect do
         | 
| 2623 | 
            +
                      mom.save
         | 
| 2624 | 
            +
                    end.to raise_error(Mongoid::Errors::InvalidAroundCallback)
         | 
| 2625 | 
            +
                  end
         | 
| 2626 | 
            +
                end
         | 
| 2627 | 
            +
              end
         | 
| 2597 2628 | 
             
            end
         | 
| @@ -3,6 +3,19 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            require "spec_helper"
         | 
| 5 5 |  | 
| 6 | 
            +
            # Retrieve the singleton class for the given class.
         | 
| 7 | 
            +
            def singleton_class_for(klass)
         | 
| 8 | 
            +
              class <<klass; self; end
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # Helper method for removing a declared scope
         | 
| 12 | 
            +
            def remove_scope(klass, scope)
         | 
| 13 | 
            +
              if klass._declared_scopes[scope]
         | 
| 14 | 
            +
                singleton_class_for(klass).remove_method(scope)
         | 
| 15 | 
            +
                klass._declared_scopes.delete(scope)
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 6 19 | 
             
            describe Mongoid::Scopable do
         | 
| 7 20 |  | 
| 8 21 | 
             
              describe ".default_scope" do
         | 
| @@ -349,6 +362,10 @@ describe Mongoid::Scopable do | |
| 349 362 | 
             
                      Band.create!(name: 'testing')
         | 
| 350 363 | 
             
                    end
         | 
| 351 364 |  | 
| 365 | 
            +
                    after do
         | 
| 366 | 
            +
                      remove_scope(Band, :tests)
         | 
| 367 | 
            +
                    end
         | 
| 368 | 
            +
             | 
| 352 369 | 
             
                    it 'applies the collation' do
         | 
| 353 370 | 
             
                      expect(Band.tests.first['name']).to eq('testing')
         | 
| 354 371 | 
             
                    end
         | 
| @@ -365,10 +382,7 @@ describe Mongoid::Scopable do | |
| 365 382 | 
             
                    end
         | 
| 366 383 |  | 
| 367 384 | 
             
                    after do
         | 
| 368 | 
            -
                       | 
| 369 | 
            -
                        undef_method :active
         | 
| 370 | 
            -
                      end
         | 
| 371 | 
            -
                      Band._declared_scopes.clear
         | 
| 385 | 
            +
                      remove_scope(Band, :active)
         | 
| 372 386 | 
             
                    end
         | 
| 373 387 |  | 
| 374 388 | 
             
                    let(:scope) do
         | 
| @@ -390,10 +404,7 @@ describe Mongoid::Scopable do | |
| 390 404 | 
             
                    end
         | 
| 391 405 |  | 
| 392 406 | 
             
                    after do
         | 
| 393 | 
            -
                       | 
| 394 | 
            -
                        undef_method :tool
         | 
| 395 | 
            -
                      end
         | 
| 396 | 
            -
                      Record._declared_scopes.clear
         | 
| 407 | 
            +
                      remove_scope(Record, :tool)
         | 
| 397 408 | 
             
                    end
         | 
| 398 409 |  | 
| 399 410 | 
             
                    context "when calling the scope" do
         | 
| @@ -423,10 +434,7 @@ describe Mongoid::Scopable do | |
| 423 434 | 
             
                    end
         | 
| 424 435 |  | 
| 425 436 | 
             
                    after do
         | 
| 426 | 
            -
                       | 
| 427 | 
            -
                        undef_method :active
         | 
| 428 | 
            -
                      end
         | 
| 429 | 
            -
                      Band._declared_scopes.clear
         | 
| 437 | 
            +
                      remove_scope(Band, :active)
         | 
| 430 438 | 
             
                    end
         | 
| 431 439 |  | 
| 432 440 | 
             
                    it "adds a method for the scope" do
         | 
| @@ -461,10 +469,7 @@ describe Mongoid::Scopable do | |
| 461 469 | 
             
                        end
         | 
| 462 470 |  | 
| 463 471 | 
             
                        after do
         | 
| 464 | 
            -
                           | 
| 465 | 
            -
                            undef_method :english
         | 
| 466 | 
            -
                          end
         | 
| 467 | 
            -
                          Band._declared_scopes.clear
         | 
| 472 | 
            +
                          remove_scope(Band, :english)
         | 
| 468 473 | 
             
                        end
         | 
| 469 474 |  | 
| 470 475 | 
             
                        let(:scope) do
         | 
| @@ -527,10 +532,7 @@ describe Mongoid::Scopable do | |
| 527 532 | 
             
                      config_override :scope_overwrite_exception, true
         | 
| 528 533 |  | 
| 529 534 | 
             
                      after do
         | 
| 530 | 
            -
                         | 
| 531 | 
            -
                          undef_method :active
         | 
| 532 | 
            -
                        end
         | 
| 533 | 
            -
                        Band._declared_scopes.clear
         | 
| 535 | 
            +
                        remove_scope(Band, :active)
         | 
| 534 536 | 
             
                      end
         | 
| 535 537 |  | 
| 536 538 | 
             
                      it "raises an exception" do
         | 
| @@ -545,10 +547,7 @@ describe Mongoid::Scopable do | |
| 545 547 | 
             
                      config_override :scope_overwrite_exception, false
         | 
| 546 548 |  | 
| 547 549 | 
             
                      after do
         | 
| 548 | 
            -
                         | 
| 549 | 
            -
                          undef_method :active
         | 
| 550 | 
            -
                        end
         | 
| 551 | 
            -
                        Band._declared_scopes.clear
         | 
| 550 | 
            +
                        remove_scope(Band, :active)
         | 
| 552 551 | 
             
                      end
         | 
| 553 552 |  | 
| 554 553 | 
             
                      it "raises no exception" do
         | 
| @@ -589,10 +588,7 @@ describe Mongoid::Scopable do | |
| 589 588 | 
             
                      end
         | 
| 590 589 |  | 
| 591 590 | 
             
                      after do
         | 
| 592 | 
            -
                         | 
| 593 | 
            -
                          undef_method :active
         | 
| 594 | 
            -
                        end
         | 
| 595 | 
            -
                        Band._declared_scopes.clear
         | 
| 591 | 
            +
                        remove_scope(Band, :active)
         | 
| 596 592 | 
             
                      end
         | 
| 597 593 |  | 
| 598 594 | 
             
                      let(:scope) do
         | 
| @@ -652,11 +648,8 @@ describe Mongoid::Scopable do | |
| 652 648 | 
             
                    end
         | 
| 653 649 |  | 
| 654 650 | 
             
                    after do
         | 
| 655 | 
            -
                       | 
| 656 | 
            -
             | 
| 657 | 
            -
                        undef_method :named_by
         | 
| 658 | 
            -
                      end
         | 
| 659 | 
            -
                      Band._declared_scopes.clear
         | 
| 651 | 
            +
                      remove_scope(Band, :active)
         | 
| 652 | 
            +
                      remove_scope(Band, :named_by)
         | 
| 660 653 | 
             
                    end
         | 
| 661 654 |  | 
| 662 655 | 
             
                    it "adds a method for the scope" do
         | 
| @@ -698,10 +691,7 @@ describe Mongoid::Scopable do | |
| 698 691 | 
             
                        end
         | 
| 699 692 |  | 
| 700 693 | 
             
                        after do
         | 
| 701 | 
            -
                           | 
| 702 | 
            -
                            undef_method :english
         | 
| 703 | 
            -
                          end
         | 
| 704 | 
            -
                          Band._declared_scopes.clear
         | 
| 694 | 
            +
                          remove_scope(Band, :english)
         | 
| 705 695 | 
             
                        end
         | 
| 706 696 |  | 
| 707 697 | 
             
                        let(:scope) do
         | 
| @@ -775,15 +765,9 @@ describe Mongoid::Scopable do | |
| 775 765 | 
             
                        end
         | 
| 776 766 |  | 
| 777 767 | 
             
                        after do
         | 
| 778 | 
            -
                           | 
| 779 | 
            -
             | 
| 780 | 
            -
             | 
| 781 | 
            -
                          end
         | 
| 782 | 
            -
                          Article._declared_scopes.clear
         | 
| 783 | 
            -
                          class << Author
         | 
| 784 | 
            -
                            undef_method :author
         | 
| 785 | 
            -
                          end
         | 
| 786 | 
            -
                          Author._declared_scopes.clear
         | 
| 768 | 
            +
                          remove_scope(Article, :is_public)
         | 
| 769 | 
            +
                          remove_scope(Article, :authored)
         | 
| 770 | 
            +
                          remove_scope(Author, :author)
         | 
| 787 771 | 
             
                        end
         | 
| 788 772 |  | 
| 789 773 | 
             
                        context "when calling another model's scope from within a scope" do
         | 
| @@ -816,10 +800,7 @@ describe Mongoid::Scopable do | |
| 816 800 | 
             
                      config_override :scope_overwrite_exception, true
         | 
| 817 801 |  | 
| 818 802 | 
             
                      after do
         | 
| 819 | 
            -
                         | 
| 820 | 
            -
                          undef_method :active
         | 
| 821 | 
            -
                        end
         | 
| 822 | 
            -
                        Band._declared_scopes.clear
         | 
| 803 | 
            +
                        remove_scope(Band, :active)
         | 
| 823 804 | 
             
                      end
         | 
| 824 805 |  | 
| 825 806 | 
             
                      it "raises an exception" do
         | 
| @@ -834,10 +815,7 @@ describe Mongoid::Scopable do | |
| 834 815 | 
             
                      config_override :scope_overwrite_exception, false
         | 
| 835 816 |  | 
| 836 817 | 
             
                      after do
         | 
| 837 | 
            -
                         | 
| 838 | 
            -
                          undef_method :active
         | 
| 839 | 
            -
                        end
         | 
| 840 | 
            -
                        Band._declared_scopes.clear
         | 
| 818 | 
            +
                        remove_scope(Band, :active)
         | 
| 841 819 | 
             
                      end
         | 
| 842 820 |  | 
| 843 821 | 
             
                      it "raises no exception" do
         | 
| @@ -867,11 +845,8 @@ describe Mongoid::Scopable do | |
| 867 845 | 
             
                    end
         | 
| 868 846 |  | 
| 869 847 | 
             
                    after do
         | 
| 870 | 
            -
                       | 
| 871 | 
            -
             | 
| 872 | 
            -
                        undef_method :yyy
         | 
| 873 | 
            -
                      end
         | 
| 874 | 
            -
                      Band._declared_scopes.clear
         | 
| 848 | 
            +
                      remove_scope(Band, :xxx)
         | 
| 849 | 
            +
                      remove_scope(Band, :yyy)
         | 
| 875 850 | 
             
                    end
         | 
| 876 851 |  | 
| 877 852 | 
             
                    let(:criteria) do
         | 
| @@ -901,15 +876,8 @@ describe Mongoid::Scopable do | |
| 901 876 | 
             
                  end
         | 
| 902 877 |  | 
| 903 878 | 
             
                  after do
         | 
| 904 | 
            -
                     | 
| 905 | 
            -
             | 
| 906 | 
            -
                    end
         | 
| 907 | 
            -
                    Shape._declared_scopes.clear
         | 
| 908 | 
            -
             | 
| 909 | 
            -
                    class << Circle
         | 
| 910 | 
            -
                      undef_method :with_radius
         | 
| 911 | 
            -
                    end
         | 
| 912 | 
            -
                    Circle._declared_scopes.clear
         | 
| 879 | 
            +
                    remove_scope(Shape, :located_at)
         | 
| 880 | 
            +
                    remove_scope(Circle, :with_radius)
         | 
| 913 881 | 
             
                  end
         | 
| 914 882 |  | 
| 915 883 | 
             
                  let(:shape_scope_keys) do
         | 
| @@ -950,16 +918,9 @@ describe Mongoid::Scopable do | |
| 950 918 | 
             
                  end
         | 
| 951 919 |  | 
| 952 920 | 
             
                  after do
         | 
| 953 | 
            -
                     | 
| 954 | 
            -
             | 
| 955 | 
            -
             | 
| 956 | 
            -
                    end
         | 
| 957 | 
            -
                    Shape._declared_scopes.clear
         | 
| 958 | 
            -
             | 
| 959 | 
            -
                    class << Circle
         | 
| 960 | 
            -
                      undef_method :large
         | 
| 961 | 
            -
                    end
         | 
| 962 | 
            -
                    Circle._declared_scopes.clear
         | 
| 921 | 
            +
                    remove_scope(Shape, :visible)
         | 
| 922 | 
            +
                    remove_scope(Shape, :large)
         | 
| 923 | 
            +
                    remove_scope(Circle, :large)
         | 
| 963 924 | 
             
                  end
         | 
| 964 925 |  | 
| 965 926 | 
             
                  it "uses subclass context for all the other used scopes" do
         | 
| @@ -1099,9 +1060,7 @@ describe Mongoid::Scopable do | |
| 1099 1060 | 
             
                      end
         | 
| 1100 1061 |  | 
| 1101 1062 | 
             
                      after do
         | 
| 1102 | 
            -
                         | 
| 1103 | 
            -
                          undef_method :active
         | 
| 1104 | 
            -
                        end
         | 
| 1063 | 
            +
                        remove_scope(Band, :active)
         | 
| 1105 1064 | 
             
                      end
         | 
| 1106 1065 |  | 
| 1107 1066 | 
             
                      let(:unscoped) do
         | 
| @@ -1143,10 +1102,7 @@ describe Mongoid::Scopable do | |
| 1143 1102 | 
             
                    end
         | 
| 1144 1103 |  | 
| 1145 1104 | 
             
                    after do
         | 
| 1146 | 
            -
                       | 
| 1147 | 
            -
                        undef_method :skipped
         | 
| 1148 | 
            -
                      end
         | 
| 1149 | 
            -
                      Band._declared_scopes.clear
         | 
| 1105 | 
            +
                      remove_scope(Band, :skipped)
         | 
| 1150 1106 | 
             
                    end
         | 
| 1151 1107 |  | 
| 1152 1108 | 
             
                    it "does not allow the default scope to be applied" do
         | 
| @@ -1290,4 +1246,51 @@ describe Mongoid::Scopable do | |
| 1290 1246 | 
             
                  end
         | 
| 1291 1247 | 
             
                end
         | 
| 1292 1248 | 
             
              end
         | 
| 1249 | 
            +
             | 
| 1250 | 
            +
              describe "scoped queries" do
         | 
| 1251 | 
            +
                context "with a default scope" do
         | 
| 1252 | 
            +
                  let(:criteria) do
         | 
| 1253 | 
            +
                    Band.where(name: "Depeche Mode")
         | 
| 1254 | 
            +
                  end
         | 
| 1255 | 
            +
             | 
| 1256 | 
            +
                  before do
         | 
| 1257 | 
            +
                    Band.default_scope ->{ criteria }
         | 
| 1258 | 
            +
                    Band.scope :unscoped_everyone, -> { unscoped }
         | 
| 1259 | 
            +
                    Band.scope :removed_default, -> { scoped.remove_scoping(all) }
         | 
| 1260 | 
            +
             | 
| 1261 | 
            +
                    Band.create name: 'Depeche Mode'
         | 
| 1262 | 
            +
                    Band.create name: 'They Might Be Giants'
         | 
| 1263 | 
            +
                  end
         | 
| 1264 | 
            +
             | 
| 1265 | 
            +
                  after do
         | 
| 1266 | 
            +
                    Band.default_scoping = nil
         | 
| 1267 | 
            +
                    remove_scope Band, :unscoped_everyone
         | 
| 1268 | 
            +
                    remove_scope Band, :removed_default
         | 
| 1269 | 
            +
                  end
         | 
| 1270 | 
            +
             | 
| 1271 | 
            +
                  context "when allow_scopes_to_unset_default_scope == false" do # default for <= 9
         | 
| 1272 | 
            +
                    config_override :allow_scopes_to_unset_default_scope, false
         | 
| 1273 | 
            +
             | 
| 1274 | 
            +
                    it 'merges the default scope into the query with unscoped' do
         | 
| 1275 | 
            +
                      expect(Band.unscoped_everyone.selector).to include('name' => 'Depeche Mode')
         | 
| 1276 | 
            +
                    end
         | 
| 1277 | 
            +
             | 
| 1278 | 
            +
                    it 'merges the default scope into the query with remove_scoping' do
         | 
| 1279 | 
            +
                      expect(Band.removed_default.selector).to include('name' => 'Depeche Mode')
         | 
| 1280 | 
            +
                    end
         | 
| 1281 | 
            +
                  end
         | 
| 1282 | 
            +
             | 
| 1283 | 
            +
                  context "when allow_scopes_to_unset_default_scope == true" do # default for >= 10
         | 
| 1284 | 
            +
                    config_override :allow_scopes_to_unset_default_scope, true
         | 
| 1285 | 
            +
             | 
| 1286 | 
            +
                    it 'does not merge the default scope into the query with unscoped' do
         | 
| 1287 | 
            +
                      expect(Band.unscoped_everyone.selector).not_to include('name' => 'Depeche Mode')
         | 
| 1288 | 
            +
                    end
         | 
| 1289 | 
            +
             | 
| 1290 | 
            +
                    it 'does not merge merges the default scope into the query with remove_scoping' do
         | 
| 1291 | 
            +
                      expect(Band.removed_default.selector).not_to include('name' => 'Depeche Mode')
         | 
| 1292 | 
            +
                    end
         | 
| 1293 | 
            +
                  end
         | 
| 1294 | 
            +
                end
         | 
| 1295 | 
            +
              end
         | 
| 1293 1296 | 
             
            end
         | 
| @@ -733,6 +733,81 @@ describe Mongoid::Touchable do | |
| 733 733 | 
             
                  end
         | 
| 734 734 | 
             
                end
         | 
| 735 735 |  | 
| 736 | 
            +
                context "when a custom field is specified" do
         | 
| 737 | 
            +
             | 
| 738 | 
            +
                  shared_examples "updates the child's updated_at" do
         | 
| 739 | 
            +
             | 
| 740 | 
            +
                    let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
         | 
| 741 | 
            +
             | 
| 742 | 
            +
                    let(:update_time) { Timecop.freeze(Time.at(Time.now.to_i) + 2) }
         | 
| 743 | 
            +
             | 
| 744 | 
            +
                    after do
         | 
| 745 | 
            +
                      Timecop.return
         | 
| 746 | 
            +
                    end
         | 
| 747 | 
            +
             | 
| 748 | 
            +
                    let!(:label) do
         | 
| 749 | 
            +
                      TouchableSpec::Referenced::Label.create!
         | 
| 750 | 
            +
                    end
         | 
| 751 | 
            +
             | 
| 752 | 
            +
                    let(:band) do
         | 
| 753 | 
            +
                      TouchableSpec::Referenced::Band.create!(label: label)
         | 
| 754 | 
            +
                    end
         | 
| 755 | 
            +
             | 
| 756 | 
            +
                    before do
         | 
| 757 | 
            +
                      update_time
         | 
| 758 | 
            +
                      band.send(meth)
         | 
| 759 | 
            +
                    end
         | 
| 760 | 
            +
             | 
| 761 | 
            +
                    it "updates the child's timestamp" do
         | 
| 762 | 
            +
                      expect(band.updated_at).to eq(update_time)
         | 
| 763 | 
            +
                      expect(band.reload.updated_at).to eq(update_time)
         | 
| 764 | 
            +
                    end
         | 
| 765 | 
            +
                  end
         | 
| 766 | 
            +
             | 
| 767 | 
            +
                  shared_examples "updates the parent's custom field and updated_at" do
         | 
| 768 | 
            +
             | 
| 769 | 
            +
                    let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
         | 
| 770 | 
            +
             | 
| 771 | 
            +
                    let(:update_time) { Timecop.freeze(Time.at(Time.now.to_i) + 2) }
         | 
| 772 | 
            +
             | 
| 773 | 
            +
                    after do
         | 
| 774 | 
            +
                      Timecop.return
         | 
| 775 | 
            +
                    end
         | 
| 776 | 
            +
             | 
| 777 | 
            +
                    let!(:label) do
         | 
| 778 | 
            +
                      TouchableSpec::Referenced::Label.create!
         | 
| 779 | 
            +
                    end
         | 
| 780 | 
            +
             | 
| 781 | 
            +
                    let!(:band) do
         | 
| 782 | 
            +
                      TouchableSpec::Referenced::Band.create!(label: label)
         | 
| 783 | 
            +
                    end
         | 
| 784 | 
            +
             | 
| 785 | 
            +
                    before do
         | 
| 786 | 
            +
                      update_time
         | 
| 787 | 
            +
                      band.send(meth)
         | 
| 788 | 
            +
                    end
         | 
| 789 | 
            +
             | 
| 790 | 
            +
                    it "updates the parent's custom field" do
         | 
| 791 | 
            +
                      expect(label.bands_updated_at).to eq(update_time)
         | 
| 792 | 
            +
                      expect(label.reload.bands_updated_at).to eq(update_time)
         | 
| 793 | 
            +
                    end
         | 
| 794 | 
            +
             | 
| 795 | 
            +
                    it "updates the parent's timestamp" do
         | 
| 796 | 
            +
                      expect(label.updated_at).to eq(update_time)
         | 
| 797 | 
            +
                      expect(label.reload.updated_at).to eq(update_time)
         | 
| 798 | 
            +
                    end
         | 
| 799 | 
            +
             | 
| 800 | 
            +
                  end
         | 
| 801 | 
            +
             | 
| 802 | 
            +
                  [:save, :destroy, :touch].each do |meth|
         | 
| 803 | 
            +
                    context "with #{meth} on referenced associations" do
         | 
| 804 | 
            +
                      let(:meth) { meth }
         | 
| 805 | 
            +
                      include_examples "updates the child's updated_at" unless meth == :destroy
         | 
| 806 | 
            +
                      include_examples "updates the parent's custom field and updated_at"
         | 
| 807 | 
            +
                    end
         | 
| 808 | 
            +
                  end
         | 
| 809 | 
            +
                end
         | 
| 810 | 
            +
             | 
| 736 811 | 
             
                context 'multi-level' do
         | 
| 737 812 |  | 
| 738 813 | 
             
                  let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
         | 
| @@ -150,5 +150,21 @@ module TouchableSpec | |
| 150 150 |  | 
| 151 151 | 
             
                  embedded_in :floor, touch: true, class_name: "TouchableSpec::Referenced::Floor"
         | 
| 152 152 | 
             
                end
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                class Label
         | 
| 155 | 
            +
                  include Mongoid::Document
         | 
| 156 | 
            +
                  include Mongoid::Timestamps
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                  field :bands_updated_at, type: DateTime
         | 
| 159 | 
            +
                  has_many :bands, class_name: "TouchableSpec::Referenced::Band"
         | 
| 160 | 
            +
                end
         | 
| 161 | 
            +
                
         | 
| 162 | 
            +
                class Band
         | 
| 163 | 
            +
                  include Mongoid::Document
         | 
| 164 | 
            +
                  include Mongoid::Timestamps
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                  belongs_to :label, touch: :bands_updated_at, class_name: "TouchableSpec::Referenced::Label"
         | 
| 167 | 
            +
                end
         | 
| 168 | 
            +
                
         | 
| 153 169 | 
             
              end
         | 
| 154 170 | 
             
            end
         | 
    
        data/spec/support/models/band.rb
    CHANGED
    
    
| @@ -5,6 +5,8 @@ class LatLng | |
| 5 5 | 
             
              attr_accessor :lat, :lng
         | 
| 6 6 |  | 
| 7 7 | 
             
              def self.demongoize(object)
         | 
| 8 | 
            +
                return if object.nil?
         | 
| 9 | 
            +
             | 
| 8 10 | 
             
                LatLng.new(object[1], object[0])
         | 
| 9 11 | 
             
              end
         | 
| 10 12 |  | 
| @@ -15,4 +17,8 @@ class LatLng | |
| 15 17 | 
             
              def mongoize
         | 
| 16 18 | 
             
                [ lng, lat ]
         | 
| 17 19 | 
             
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def ==(other)
         | 
| 22 | 
            +
                lat == other.lat && lng == other.lng
         | 
| 23 | 
            +
              end
         | 
| 18 24 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,41 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mongoid
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 9.0. | 
| 4 | 
            +
              version: 9.0.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - The MongoDB Ruby Team
         | 
| 8 | 
            -
            autorequire:
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 | 
            -
            cert_chain:
         | 
| 11 | 
            -
            -  | 
| 12 | 
            -
              -----BEGIN CERTIFICATE-----
         | 
| 13 | 
            -
              MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMREwDwYDVQQDDAhkYngt
         | 
| 14 | 
            -
              cnVieTEXMBUGCgmSJomT8ixkARkWB21vbmdvZGIxEzARBgoJkiaJk/IsZAEZFgNj
         | 
| 15 | 
            -
              b20wHhcNMjQwMjA5MTc0NzIyWhcNMjUwMjA4MTc0NzIyWjBBMREwDwYDVQQDDAhk
         | 
| 16 | 
            -
              YngtcnVieTEXMBUGCgmSJomT8ixkARkWB21vbmdvZGIxEzARBgoJkiaJk/IsZAEZ
         | 
| 17 | 
            -
              FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC0/Veq9l47cTfX
         | 
| 18 | 
            -
              tQ+kHq2NOCwJuJGt1iXWQ/vH/yp7pZ/bLej7gPDl2CfIngAXRjM7r1FkR9ya7VAm
         | 
| 19 | 
            -
              IneBFcVU3HhpIXWi4ByXGjBOXFD1Dfbz4C4zedIWRk/hNzXa+rQY4KPwpOwG/hZg
         | 
| 20 | 
            -
              id+rSXWSbNlkyN97XfonweVh7JsIa9X/2JY9ADYjhCfEZF+b0+Wl7+jgwzLWb46I
         | 
| 21 | 
            -
              0WH0bZBIZ0BbKAwUXIgvq5mQf9PzukmMVYCwnkJ/P4wrHO22HuwnbMyvJuGjVwqi
         | 
| 22 | 
            -
              j1NRp/2vjmKBFWxIfhlSXEIiqAmeEVNXzhPvTVeyo+rma+7R3Bo+4WHkcnPpXJJZ
         | 
| 23 | 
            -
              Jd63qXMvTB0GplEcMJPztWhrJOmcxIOVoQyigEPSQT8JpzFVXby4SGioizv2eT7l
         | 
| 24 | 
            -
              VYSiCHuc3yEDyq5M+98WGX2etbj6esYtzI3rDevpIAHPB6HQmtoJIA4dSl3gjFb+
         | 
| 25 | 
            -
              D+YQSuB2qYu021FI9zeY9sbZyWysEXBxhwrmTk+XUV0qz+OQZkMCAwEAAaN7MHkw
         | 
| 26 | 
            -
              CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFH4nnr4tYlatU57RbExW
         | 
| 27 | 
            -
              jG86YM5nMB8GA1UdEQQYMBaBFGRieC1ydWJ5QG1vbmdvZGIuY29tMB8GA1UdEgQY
         | 
| 28 | 
            -
              MBaBFGRieC1ydWJ5QG1vbmdvZGIuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBKGtHA
         | 
| 29 | 
            -
              fpi3N/BL1J5O4CBsAjtF4jHDiw2r5MwK+66NzMh3uedjgPI7MoosemLy++SB+8BR
         | 
| 30 | 
            -
              SE8bDkb6gfDQQzrI6KSXXyqH2TbQXpY5Tac7/yqXRiu8G2qOrOj4czB/Hq7j09CV
         | 
| 31 | 
            -
              YoH88v6hL11i5jt6jPjFh8hXYG0hDQxhi3atRz5Wwd98tUf2DSbyJXJiRgCBeZjl
         | 
| 32 | 
            -
              rP7AnKsWMu0C+zPlL+nXtQr+nTFtkKXRWfUJMqePpBqtriQvgQ+Y1ItqYVTSLuiM
         | 
| 33 | 
            -
              iwUMcn/rGhdCMBSaKDXdFkIveCHQE2f2WBo2EdErrcTrgEKYYdNfzcb/43j7L1kx
         | 
| 34 | 
            -
              AUwyTtk+HFrviBynQbKN82rjbZE+5gukVea5c7idQPkqacPYsoU37DI+hTlUyJkV
         | 
| 35 | 
            -
              dcTtfEg44lLlfNukBslfiQf54r+uWbyB0m0rDUN/py7/Ghyzt5GLBU91uCO3dGoI
         | 
| 36 | 
            -
              55uFRHMvEcJMTDeImC/nuucPCAiEGMHggr9+NPC0tqpxjGKTo7lS7GzUFjg=
         | 
| 37 | 
            -
              -----END CERTIFICATE-----
         | 
| 38 | 
            -
            date: 2024-05-01 00:00:00.000000000 Z
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2024-07-29 00:00:00.000000000 Z
         | 
| 39 12 | 
             
            dependencies:
         | 
| 40 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 41 14 | 
             
              name: activemodel
         | 
| @@ -305,6 +278,7 @@ files: | |
| 305 278 | 
             
            - lib/mongoid/errors/empty_config_file.rb
         | 
| 306 279 | 
             
            - lib/mongoid/errors/immutable_attribute.rb
         | 
| 307 280 | 
             
            - lib/mongoid/errors/in_memory_collation_not_supported.rb
         | 
| 281 | 
            +
            - lib/mongoid/errors/invalid_around_callback.rb
         | 
| 308 282 | 
             
            - lib/mongoid/errors/invalid_async_query_executor.rb
         | 
| 309 283 | 
             
            - lib/mongoid/errors/invalid_auto_encryption_configuration.rb
         | 
| 310 284 | 
             
            - lib/mongoid/errors/invalid_collection.rb
         | 
| @@ -912,29 +886,6 @@ files: | |
| 912 886 | 
             
            - spec/mongoid_spec.rb
         | 
| 913 887 | 
             
            - spec/rails/controller_extension/controller_runtime_spec.rb
         | 
| 914 888 | 
             
            - spec/rails/mongoid_spec.rb
         | 
| 915 | 
            -
            - spec/shared/LICENSE
         | 
| 916 | 
            -
            - spec/shared/bin/get-mongodb-download-url
         | 
| 917 | 
            -
            - spec/shared/bin/s3-copy
         | 
| 918 | 
            -
            - spec/shared/bin/s3-upload
         | 
| 919 | 
            -
            - spec/shared/lib/mrss/child_process_helper.rb
         | 
| 920 | 
            -
            - spec/shared/lib/mrss/cluster_config.rb
         | 
| 921 | 
            -
            - spec/shared/lib/mrss/constraints.rb
         | 
| 922 | 
            -
            - spec/shared/lib/mrss/docker_runner.rb
         | 
| 923 | 
            -
            - spec/shared/lib/mrss/eg_config_utils.rb
         | 
| 924 | 
            -
            - spec/shared/lib/mrss/event_subscriber.rb
         | 
| 925 | 
            -
            - spec/shared/lib/mrss/lite_constraints.rb
         | 
| 926 | 
            -
            - spec/shared/lib/mrss/server_version_registry.rb
         | 
| 927 | 
            -
            - spec/shared/lib/mrss/session_registry.rb
         | 
| 928 | 
            -
            - spec/shared/lib/mrss/session_registry_legacy.rb
         | 
| 929 | 
            -
            - spec/shared/lib/mrss/spec_organizer.rb
         | 
| 930 | 
            -
            - spec/shared/lib/mrss/utils.rb
         | 
| 931 | 
            -
            - spec/shared/share/Dockerfile.erb
         | 
| 932 | 
            -
            - spec/shared/share/haproxy-1.conf
         | 
| 933 | 
            -
            - spec/shared/share/haproxy-2.conf
         | 
| 934 | 
            -
            - spec/shared/shlib/config.sh
         | 
| 935 | 
            -
            - spec/shared/shlib/distro.sh
         | 
| 936 | 
            -
            - spec/shared/shlib/server.sh
         | 
| 937 | 
            -
            - spec/shared/shlib/set_env.sh
         | 
| 938 889 | 
             
            - spec/spec_helper.rb
         | 
| 939 890 | 
             
            - spec/support/authorization.rb
         | 
| 940 891 | 
             
            - spec/support/client_registry.rb
         | 
| @@ -1229,7 +1180,7 @@ metadata: | |
| 1229 1180 | 
             
              documentation_uri: https://www.mongodb.com/docs/mongoid/
         | 
| 1230 1181 | 
             
              homepage_uri: https://mongoid.org/
         | 
| 1231 1182 | 
             
              source_code_uri: https://github.com/mongodb/mongoid
         | 
| 1232 | 
            -
            post_install_message:
         | 
| 1183 | 
            +
            post_install_message: 
         | 
| 1233 1184 | 
             
            rdoc_options: []
         | 
| 1234 1185 | 
             
            require_paths:
         | 
| 1235 1186 | 
             
            - lib
         | 
| @@ -1244,8 +1195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 1244 1195 | 
             
                - !ruby/object:Gem::Version
         | 
| 1245 1196 | 
             
                  version: 1.3.6
         | 
| 1246 1197 | 
             
            requirements: []
         | 
| 1247 | 
            -
            rubygems_version: 3. | 
| 1248 | 
            -
            signing_key:
         | 
| 1198 | 
            +
            rubygems_version: 3.4.19
         | 
| 1199 | 
            +
            signing_key: 
         | 
| 1249 1200 | 
             
            specification_version: 4
         | 
| 1250 1201 | 
             
            summary: Elegant Persistence in Ruby for MongoDB.
         | 
| 1251 1202 | 
             
            test_files:
         | 
| @@ -1655,29 +1606,6 @@ test_files: | |
| 1655 1606 | 
             
            - spec/mongoid_spec.rb
         | 
| 1656 1607 | 
             
            - spec/rails/controller_extension/controller_runtime_spec.rb
         | 
| 1657 1608 | 
             
            - spec/rails/mongoid_spec.rb
         | 
| 1658 | 
            -
            - spec/shared/LICENSE
         | 
| 1659 | 
            -
            - spec/shared/bin/get-mongodb-download-url
         | 
| 1660 | 
            -
            - spec/shared/bin/s3-copy
         | 
| 1661 | 
            -
            - spec/shared/bin/s3-upload
         | 
| 1662 | 
            -
            - spec/shared/lib/mrss/child_process_helper.rb
         | 
| 1663 | 
            -
            - spec/shared/lib/mrss/cluster_config.rb
         | 
| 1664 | 
            -
            - spec/shared/lib/mrss/constraints.rb
         | 
| 1665 | 
            -
            - spec/shared/lib/mrss/docker_runner.rb
         | 
| 1666 | 
            -
            - spec/shared/lib/mrss/eg_config_utils.rb
         | 
| 1667 | 
            -
            - spec/shared/lib/mrss/event_subscriber.rb
         | 
| 1668 | 
            -
            - spec/shared/lib/mrss/lite_constraints.rb
         | 
| 1669 | 
            -
            - spec/shared/lib/mrss/server_version_registry.rb
         | 
| 1670 | 
            -
            - spec/shared/lib/mrss/session_registry.rb
         | 
| 1671 | 
            -
            - spec/shared/lib/mrss/session_registry_legacy.rb
         | 
| 1672 | 
            -
            - spec/shared/lib/mrss/spec_organizer.rb
         | 
| 1673 | 
            -
            - spec/shared/lib/mrss/utils.rb
         | 
| 1674 | 
            -
            - spec/shared/share/Dockerfile.erb
         | 
| 1675 | 
            -
            - spec/shared/share/haproxy-1.conf
         | 
| 1676 | 
            -
            - spec/shared/share/haproxy-2.conf
         | 
| 1677 | 
            -
            - spec/shared/shlib/config.sh
         | 
| 1678 | 
            -
            - spec/shared/shlib/distro.sh
         | 
| 1679 | 
            -
            - spec/shared/shlib/server.sh
         | 
| 1680 | 
            -
            - spec/shared/shlib/set_env.sh
         | 
| 1681 1609 | 
             
            - spec/spec_helper.rb
         | 
| 1682 1610 | 
             
            - spec/support/authorization.rb
         | 
| 1683 1611 | 
             
            - spec/support/client_registry.rb
         | 
    
        checksums.yaml.gz.sig
    DELETED
    
    | @@ -1 +0,0 @@ | |
| 1 | 
            -
            :6����K�ZP�����恦��gO��h3yL���yٍA=��Pve�����T����HߺL�*�m(F!t1�]����\
         | 
    
        data/spec/shared/LICENSE
    DELETED
    
    | @@ -1,20 +0,0 @@ | |
| 1 | 
            -
            Copyright (c) 2020 MongoDB, Inc.
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 4 | 
            -
            a copy of this software and associated documentation files (the
         | 
| 5 | 
            -
            "Software"), to deal in the Software without restriction, including
         | 
| 6 | 
            -
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 7 | 
            -
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 8 | 
            -
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 9 | 
            -
            the following conditions:
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            The above copyright notice and this permission notice shall be
         | 
| 12 | 
            -
            included in all copies or substantial portions of the Software.
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 15 | 
            -
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 16 | 
            -
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 17 | 
            -
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 18 | 
            -
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 19 | 
            -
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 20 | 
            -
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            desired_version, arch = ARGV
         | 
| 4 | 
            -
            if arch.nil?
         | 
| 5 | 
            -
              STDERR.puts "Usage: get-mongodb-download-url desired-version arch"
         | 
| 6 | 
            -
              exit 1
         | 
| 7 | 
            -
            end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            $: << File.join(File.dirname(__FILE__), '../lib')
         | 
| 10 | 
            -
            require 'mrss/server_version_registry'
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            begin
         | 
| 13 | 
            -
              puts Mrss::ServerVersionRegistry.new(desired_version, arch).download_url
         | 
| 14 | 
            -
            rescue Mrss::ServerVersionRegistry::Error => exc
         | 
| 15 | 
            -
              STDERR.puts "Error: #{exc}"
         | 
| 16 | 
            -
              exit 2
         | 
| 17 | 
            -
            end
         | 
    
        data/spec/shared/bin/s3-copy
    DELETED
    
    | @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'optparse'
         | 
| 4 | 
            -
            require 'aws-sdk-s3'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            options = {}
         | 
| 7 | 
            -
            OptionParser.new do |opts|
         | 
| 8 | 
            -
              opts.banner = "Usage: s3-copy options"
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              opts.on("-r", "--region=REGION", "AWS region to use (default us-east-1)") do |v|
         | 
| 11 | 
            -
                options[:region] = v
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              opts.on("-p", "--param=KEY=VALUE", "Specify parameter for new files") do |v|
         | 
| 15 | 
            -
                options[:params] ||= {}
         | 
| 16 | 
            -
                k, v = v.split('=', 2)
         | 
| 17 | 
            -
                options[:params][k.to_sym] = v
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              opts.on("-f", "--from=BUCKET:PATH", "Bucket name and key (or path) to copy from") do |v|
         | 
| 21 | 
            -
                options[:from] = v
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              opts.on("-t", "--to=BUCKET:PATH", "Bucket name and key (or path) to write to (may be specified more than once)") do |v|
         | 
| 25 | 
            -
                options[:to] ||= []
         | 
| 26 | 
            -
                options[:to] << v
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
            end.parse!
         | 
| 29 | 
            -
             | 
| 30 | 
            -
            ENV['AWS_REGION'] ||= options[:region] || 'us-east-1'
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            bucket, key = options.fetch(:from).split(':', 2)
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            s3 = Aws::S3::Client.new
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            options.fetch(:to).each do |dest|
         | 
| 37 | 
            -
              STDERR.puts "Copying to #{dest}"
         | 
| 38 | 
            -
              dbucket, dkey = dest.split(':', 2)
         | 
| 39 | 
            -
              s3.copy_object(
         | 
| 40 | 
            -
                bucket: dbucket,
         | 
| 41 | 
            -
                key: dkey,
         | 
| 42 | 
            -
                copy_source: "/#{bucket}/#{key}",
         | 
| 43 | 
            -
                **options[:params] || {},
         | 
| 44 | 
            -
              )
         | 
| 45 | 
            -
            end
         |