Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/r/ruby-hashie/ruby-hashie_3.5.5-2_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/ruby-hashie-3.5.5-2gx0047kf/ruby-hashie_3.5.5-2_all.buildinfo Get source package info: ruby-hashie=3.5.5-2 Source URL: http://snapshot.notset.fr/mr/package/ruby-hashie/3.5.5-2/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=autoconf=2.69-11 automake=1:1.15.1-3 autopoint=0.19.8.1-4 autotools-dev=20171216.1 base-files=10.1 base-passwd=3.5.44 bash=4.4.18-1.1 binutils=2.30-5 binutils-common=2.30-5 binutils-x86-64-linux-gnu=2.30-5 bsdmainutils=11.1.2 bsdutils=1:2.31.1-0.4 build-essential=12.4 bzip2=1.0.6-8.1 ca-certificates=20170717 coreutils=8.28-1 cpp=4:7.2.0-1d1 cpp-7=7.3.0-4 dash=0.5.8-2.10 debconf=1.5.65 debhelper=11.1.4 debianutils=4.8.4 devscripts=2.17.12 dh-autoreconf=16 dh-python=2.20170125 dh-strip-nondeterminism=0.040-1 diffutils=1:3.6-1 dpkg=1.19.0.5 dpkg-dev=1.19.0.5 e2fsprogs=1.43.9-1 fdisk=2.31.1-0.4 file=1:5.32-2 findutils=4.6.0+git+20170828-2 g++=4:7.2.0-1d1 g++-7=7.3.0-4 gcc=4:7.2.0-1d1 gcc-7=7.3.0-4 gcc-7-base=7.3.0-4 gcc-8-base=8-20180207-2 gem2deb=0.36 gem2deb-test-runner=0.36 gettext=0.19.8.1-4 gettext-base=0.19.8.1-4 grep=3.1-2 groff-base=1.22.3-10 gzip=1.6-5+b1 hostname=3.20 init-system-helpers=1.51 intltool-debian=0.35.0+20060710.4 libacl1=2.2.52-3+b1 libarchive-zip-perl=1.60-1 libasan4=7.3.0-4 libatomic1=8-20180207-2 libattr1=1:2.4.47-2+b2 libaudit-common=1:2.8.2-1 libaudit1=1:2.8.2-1 libbinutils=2.30-5 libblkid1=2.31.1-0.4 libbsd0=0.8.7-1 libbz2-1.0=1.0.6-8.1 libc-bin=2.26-6 libc-dev-bin=2.26-6 libc6=2.26-6 libc6-dev=2.26-6 libcap-ng0=0.7.7-3.1+b1 libcc1-0=8-20180207-2 libcilkrts5=7.3.0-4 libcom-err2=1.43.9-1 libcroco3=0.6.12-2 libdb5.3=5.3.28-13.1+b1 libdebconfclient0=0.241 libdpkg-perl=1.19.0.5 libexpat1=2.2.5-3 libext2fs2=1.43.9-1 libfdisk1=2.31.1-0.4 libffi6=3.2.1-8 libfile-homedir-perl=1.002-1 libfile-stripnondeterminism-perl=0.040-1 libfile-which-perl=1.21-1 libgcc-7-dev=7.3.0-4 libgcc1=1:8-20180207-2 libgcrypt20=1.8.1-4 libgdbm3=1.8.3-14 libgdbm5=1.14.1-3 libglib2.0-0=2.54.3-2 libgmp-dev=2:6.1.2+dfsg-2 libgmp10=2:6.1.2+dfsg-2 libgmpxx4ldbl=2:6.1.2+dfsg-2 libgomp1=8-20180207-2 libgpg-error0=1.27-6 libicu57=57.1-8 libisl15=0.18-1 libitm1=8-20180207-2 liblsan0=8-20180207-2 liblz4-1=0.0~r131-2+b1 liblzma5=5.2.2-1.3 libmagic-mgc=1:5.32-2 libmagic1=1:5.32-2 libmount1=2.31.1-0.4 libmpc3=1.1.0-1 libmpdec2=2.4.2-1 libmpfr6=4.0.1-1 libmpx2=8-20180207-2 libncurses5=6.1-1 libncursesw5=6.1-1 libpam-modules=1.1.8-3.7 libpam-modules-bin=1.1.8-3.7 libpam-runtime=1.1.8-3.7 libpam0g=1.1.8-3.7 libpcre3=2:8.39-9 libperl5.26=5.26.1-4+b1 libpipeline1=1.5.0-1 libpython3-stdlib=3.6.4-1 libpython3.6-minimal=3.6.4-4 libpython3.6-stdlib=3.6.4-4 libquadmath0=8-20180207-2 libreadline7=7.0-3 libruby2.3=2.3.6-2 libruby2.5=2.5.0-4 libseccomp2=2.3.1-2.1 libselinux1=2.7-2+b1 libsigsegv2=2.12-1 libsmartcols1=2.31.1-0.4 libsqlite3-0=3.22.0-1 libss2=1.43.9-1 libssl1.0.2=1.0.2n-1 libssl1.1=1.1.0g-2 libstdc++-7-dev=7.3.0-4 libstdc++6=8-20180207-2 libsystemd0=237-3 libtimedate-perl=2.3000-2 libtinfo5=6.1-1 libtool=2.4.6-2 libtsan0=8-20180207-2 libubsan0=7.3.0-4 libudev1=237-3 libunistring2=0.9.8-1 libuuid1=2.31.1-0.4 libxml2=2.9.4+dfsg1-6.1 libyaml-0-2=0.1.7-2 linux-libc-dev=4.15.4-1 login=1:4.5-1 m4=1.4.18-1 make=4.2.1-1 man-db=2.8.1-1 mawk=1.3.3-17+b3 mime-support=3.60 ncurses-base=6.1-1 ncurses-bin=6.1-1 openssl=1.1.0g-2 patch=2.7.6-1 perl=5.26.1-4+b1 perl-base=5.26.1-4+b1 perl-modules-5.26=5.26.1-4 po-debconf=1.0.20 pry=0.11.3-1 python3=3.6.4-1 python3-distutils=3.6.4-4 python3-lib2to3=3.6.4-4 python3-minimal=3.6.4-1 python3.6=3.6.4-4 python3.6-minimal=3.6.4-4 rake=12.3.0-1 readline-common=7.0-3 ruby=1:2.5~1 ruby-activesupport=2:4.2.9-4 ruby-all-dev=1:2.5~1 ruby-atomic=1.1.16-2+b7 ruby-coderay=1.1.2-2 ruby-did-you-mean=1.0.0-2 ruby-diff-lcs=1.3-1 ruby-hashie=3.4.4-1 ruby-i18n=0.7.0-2 ruby-json=2.1.0+dfsg-1+b1 ruby-method-source=0.9.0-1 ruby-minitest=5.10.3-1 ruby-net-telnet=0.1.1-2 ruby-omniauth=1.3.1-2 ruby-power-assert=0.3.0-1 ruby-rack=1.6.4-4 ruby-rack-protection=1.5.3-2 ruby-rack-test=0.7.0-1 ruby-rspec=3.7.0c1e0m0s1-1 ruby-rspec-core=3.7.0c1e0m0s1-1 ruby-rspec-expectations=3.7.0c1e0m0s1-1 ruby-rspec-mocks=3.7.0c1e0m0s1-1 ruby-rspec-pending-for=0.1.3-2 ruby-rspec-support=3.7.0c1e0m0s1-1 ruby-ruby-engine=1.0.1-2 ruby-ruby-version=1.0.1-2 ruby-setup=3.4.1-9 ruby-sinatra=1.4.7-5 ruby-test-unit=3.2.5-1 ruby-thread-order=1.1.0-1 ruby-thread-safe=0.3.5-3 ruby-tilt=2.0.1-2 ruby-tzinfo=1.2.3-1 ruby2.3=2.3.6-2 ruby2.3-dev=2.3.6-2 ruby2.5=2.5.0-4 ruby2.5-dev=2.5.0-4 rubygems-integration=1.11 sed=4.4-2 sensible-utils=0.0.11 sysvinit-utils=2.88dsf-59.10 tar=1.29b-2 tzdata=2018c-1 util-linux=2.31.1-0.4 xz-utils=5.2.2-1.3 zlib1g=1:1.2.8.dfsg-5 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20180218T221519Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d ruby-hashie=3.5.5-2 && mkdir -p /build/ruby-hashie-5lYVCp && dpkg-source --no-check -x /*.dsc /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5 && chown -R builduser:builduser /build/ruby-hashie-5lYVCp" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="POSIX" SOURCE_DATE_EPOCH="1519232854" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/ruby-hashie-5lYVCp /tmp/ruby-hashie-3.5.5-2gx0047kf buster /dev/null deb http://snapshot.notset.fr/archive/debian/20180218T221519Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.4S11zwGop9 as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.4S11zwGop9 Reading package lists... Building dependency tree... util-linux is already the newest version (2.31.1-0.4). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 132 kB of archives. After this operation, 373 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20180218T221519Z unstable/main amd64 libfakeroot amd64 1.22-2 [45.9 kB] Get:2 http://snapshot.notset.fr/archive/debian/20180218T221519Z unstable/main amd64 fakeroot amd64 1.22-2 [85.7 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 132 kB in 0s (806 kB/s) Selecting previously unselected package libfakeroot:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4428 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.22-2_amd64.deb ... Unpacking libfakeroot:amd64 (1.22-2) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.22-2_amd64.deb ... Unpacking fakeroot (1.22-2) ... Processing triggers for libc-bin (2.26-6) ... Setting up libfakeroot:amd64 (1.22-2) ... Setting up fakeroot (1.22-2) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.26-6) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20180218T221519Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.4S11zwGop9 Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Hit:2 http://snapshot.notset.fr/archive/debian/20180218T221519Z unstable InRelease Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Fetched 22.6 MB in 19s (1176 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.4S11zwGop9 I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d ruby-hashie=3.5.5-2 && mkdir -p /build/ruby-hashie-5lYVCp && dpkg-source --no-check -x /*.dsc /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5 && chown -R builduser:builduser /build/ruby-hashie-5lYVCp"' exec /tmp/mmdebstrap.4S11zwGop9 Reading package lists... NOTICE: 'ruby-hashie' packaging is maintained in the 'Git' version control system at: https://anonscm.debian.org/git/pkg-ruby-extras/ruby-hashie.git Please use: git clone https://anonscm.debian.org/git/pkg-ruby-extras/ruby-hashie.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 74.2 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-hashie 3.5.5-2 (dsc) [2151 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-hashie 3.5.5-2 (tar) [68.9 kB] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-hashie 3.5.5-2 (diff) [3084 B] Fetched 74.2 kB in 0s (820 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'ruby-hashie_3.5.5-2.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting ruby-hashie in /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5 dpkg-source: info: unpacking ruby-hashie_3.5.5.orig.tar.gz dpkg-source: info: unpacking ruby-hashie_3.5.5-2.debian.tar.xz dpkg-source: info: applying 0001-spec-spec_helper.rb-don-t-load-pry.patch I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="POSIX" SOURCE_DATE_EPOCH="1519232854" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.4S11zwGop9 dpkg-buildpackage: info: source package ruby-hashie dpkg-buildpackage: info: source version 3.5.5-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Pirate Praveen dpkg-source --before-build ruby-hashie-3.5.5 fakeroot debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_ruby --clean dh_clean -O--buildsystem=ruby debian/rules build-indep dh build-indep --buildsystem=ruby --with ruby dh_update_autotools_config -i -O--buildsystem=ruby dh_autoreconf -i -O--buildsystem=ruby dh_auto_configure -i -O--buildsystem=ruby dh_ruby --configure dh_auto_build -i -O--buildsystem=ruby dh_ruby --build dh_ruby --build dh_auto_test -i -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp fakeroot debian/rules binary-indep dh binary-indep --buildsystem=ruby --with ruby dh_testroot -i -O--buildsystem=ruby dh_prep -i -O--buildsystem=ruby dh_auto_install -i -O--buildsystem=ruby dh_ruby --install /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie dh_ruby --install ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install files │ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/ignore_undeclared.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/ignore_undeclared.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/array/pretty_inspect.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/array/pretty_inspect.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/pretty_inspect.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/pretty_inspect.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/ruby_version.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/ruby_version.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/key_conversion.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/key_conversion.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/indifferent_access.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/indifferent_access.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/coercion.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/coercion.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/deep_locate.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/deep_locate.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/ruby_version_check.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/ruby_version_check.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/parsers/yaml_erb_parser.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/parsers/yaml_erb_parser.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/method_access.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/method_access.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/deep_merge.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/deep_merge.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/merge_initializer.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/merge_initializer.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/stringify_keys.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/stringify_keys.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/symbolize_keys.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/symbolize_keys.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/strict_key_access.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/strict_key_access.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/dash/indifferent_access.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/dash/indifferent_access.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/dash/coercion.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/dash/coercion.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/dash/property_translation.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/dash/property_translation.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/mash/safe_assignment.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/mash/safe_assignment.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/mash/keep_original_keys.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/mash/keep_original_keys.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/mash/symbolize_keys.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/mash/symbolize_keys.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/deep_fetch.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/deep_fetch.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/extensions/deep_find.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/extensions/deep_find.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/trash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/trash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/utils.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/utils.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/logger.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/logger.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/hash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/hash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/dash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/dash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/mash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/mash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/array.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/array.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/clash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/clash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/rash.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/rash.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/railtie.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/railtie.rb install -D -m644 /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/lib/hashie/version.rb /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby/hashie/version.rb dh_installchangelogs -pruby-hashie /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/CHANGELOG.md upstream ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ └──────────────────────────────────────────────────────────────────────────────┘ generating gemspec at /build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/share/rubygems-integration/all/specifications/hashie-3.5.5.gemspec /usr/bin/ruby2.3 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.3 │ └──────────────────────────────────────────────────────────────────────────────┘ GEM_PATH=debian/ruby-hashie/usr/share/rubygems-integration/all:/var/lib/gems/2.3.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.3.0:/usr/share/rubygems-integration/2.3.0:/usr/share/rubygems-integration/all ruby2.3 -e gem\ \"hashie\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.3 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=/build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-hashie/usr/share/rubygems-integration/all:/var/lib/gems/2.3.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.3.0:/usr/share/rubygems-integration/2.3.0:/usr/share/rubygems-integration/all ruby2.3 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.3 /usr/bin/rspec ./spec/hashie/array_spec.rb ./spec/hashie/clash_spec.rb ./spec/hashie/dash_spec.rb ./spec/hashie/extensions/autoload_spec.rb ./spec/hashie/extensions/coercion_spec.rb ./spec/hashie/extensions/dash/coercion_spec.rb ./spec/hashie/extensions/dash/indifferent_access_spec.rb ./spec/hashie/extensions/deep_fetch_spec.rb ./spec/hashie/extensions/deep_find_spec.rb ./spec/hashie/extensions/deep_locate_spec.rb ./spec/hashie/extensions/deep_merge_spec.rb ./spec/hashie/extensions/ignore_undeclared_spec.rb ./spec/hashie/extensions/indifferent_access_spec.rb ./spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb ./spec/hashie/extensions/key_conversion_spec.rb ./spec/hashie/extensions/mash/keep_original_keys_spec.rb ./spec/hashie/extensions/mash/safe_assignment_spec.rb ./spec/hashie/extensions/mash/symbolize_keys_spec.rb ./spec/hashie/extensions/merge_initializer_spec.rb ./spec/hashie/extensions/method_access_spec.rb ./spec/hashie/extensions/strict_key_access_spec.rb ./spec/hashie/extensions/stringify_keys_spec.rb ./spec/hashie/extensions/symbolize_keys_spec.rb ./spec/hashie/hash_spec.rb ./spec/hashie/mash_spec.rb ./spec/hashie/parsers/yaml_erb_parser_spec.rb ./spec/hashie/rash_spec.rb ./spec/hashie/trash_spec.rb ./spec/hashie/utils_spec.rb ./spec/hashie/version_spec.rb ./spec/hashie_spec.rb ./spec/integration/omniauth/integration_spec.rb ./spec/integration/rails-without-dependency/integration_spec.rb --format documentation Array #dig works with a string index works with a numeric index when array is empty works with a first numeric and next string index throws an error with first string and next numeric index Hashie::Clash is able to set an attribute via method_missing is able to set multiple attributes converts multiple arguments into an array is able to use bang notation to create a new Clash on a key is able to chain onto the new Clash when using bang notation is able to jump back up to the parent in the chain with #_end! merges rather than replaces existing keys is able to replace all of its own keys with #replace merges multiple bang notation calls raises an exception when method is missing when inherited bang nodes are instances of a subclass merged nodes are instances of a subclass DashTestDefaultProc as_json behaves correctly with default proc DashTest subclasses Hashie::Hash lists all set properties in inspect should respond to #first_name should respond to #first_name= should not respond to #nonexistent errors out for a non-existent property errors out when attempting to set a required property to nil errors out when message added to not required property #to_s should eq "#" #count should be zero writing to properties fails writing a required property to nil fails writing a required property to nil using []= fails writing to a non-existent property using []= works for an existing property using []= works for an existing property using a method call reading from properties fails reading from a non-existent property using [] is able to retrieve properties through blocks is able to retrieve properties through blocks with method calls reading from deferred properties evaluates proc after initial read does not evalute proc after subsequent reads reading from a deferred property based on context provides the current hash as context for evaluation converting from a Mash without keeping the original keys does not pick up the property from the stringified key when keeping the original keys picks up the property from the original key #new fails with non-existent properties sets properties that it is able to accepts nil accepts block to define a global default fails when required values are missing does not overwrite default values #merge creates a new instance of the Dash merges the given hash fails with non-existent properties errors out when attempting to set a required property to nil given a block sets merged key's values to the block's return value #merge! modifies the existing instance of the Dash merges the given hash fails with non-existent properties errors out when attempting to set a required property to nil given a block sets merged key's values to the block's return value properties lists defined properties checks if a property exists checks if a property is required doesnt include property from subclass lists declared defaults allows properties that end in bang #replace return self sets all specified keys to their corresponding values leaves only specified keys and keys with default values when replacing keys with default values sets all specified keys to their corresponding values #update_attributes!(params) update the attributes when there is coercion update the attributes when required property is update to nil raise an ArgumentError when a default property is update to nil set the property back to the default value Hashie::Dash inheritance reports empty properties when nothing defined inherits properties downwards doesnt inherit properties upwards allows overriding a default on an existing property allows clearing an existing default allows nil defaults SubclassedTest should respond to #first_name should respond to #first_name= should respond to #last_name should respond to #last_name= has one additional property didn't override superclass inheritance logic #count should be zero ConditionallyRequiredTest does not allow a conditionally required property to be set to nil if required allows a conditionally required property to be set to nil if not required allows a conditionally required property to be set if required MixedPropertiesTest should respond to #string should respond to #symbol property? fetch double define assign Dynamic Dash Class define property with method access #test should eq "value" #test? should eq true Hashie::Extensions autloads constants should be const defined :MethodAccess should be const defined :Coercion should be const defined :DeepMerge should be const defined :IgnoreUndeclared should be const defined :IndifferentAccess should be const defined :MergeInitializer should be const defined :MethodAccess should be const defined :MethodQuery should be const defined :MethodReader should be const defined :MethodWriter should be const defined :StringifyKeys should be const defined :SymbolizeKeys should be const defined :DeepFetch should be const defined :DeepFind should be const defined :PrettyInspect should be const defined :KeyConversion should be const defined :MethodAccessWithOverride Hashie::Extensions::Coercion #coerce_key should be respond to :coerce_key runs through coerce on a specified key skips unnecessary coercions supports an array of keys supports coercion for Array supports coercion for Set supports coercion for Set of primitive supports coercion for Hash supports coercion for Hash with primitive as value calls #new if no coerce method is available coerces when the merge initializer is used nesting does not add coercions to superclass coerces nested objects coerces nested arrays coerces nested hashes when repetitively including the module does not raise a stack overflow error coercing core types coerces from String to Integer via to_i coerces from Integer to Integer via to_i coerces from Rational to Integer via to_i coerces from String to Float via to_f coerces from Integer to Float via to_f coerces from Rational to Float via to_f coerces from String to String via to_s coerces from Integer to String via to_s coerces from Rational to String via to_s coerces from String to String via to_s coerces from Symbol to String via to_s coerces from String to Symbol via to_sym coerces from Symbol to Symbol via to_sym can coerce String to Rational when possible can coerce String to Complex when possible coerces collections with core types can coerce via a proc raises errors for non-coercable types can coerce false does not coerce nil when #replace is used coerces relevant keys sets correct values when used with a Mash coerces with instance initialization coerces when setting with attribute style coerces when setting with string index coerces when setting with symbol index when used with a Trash coerces with instance initialization when used with IndifferentAccess to coerce a Mash coerces with instance initialization coerces when setting with string index coerces when setting with symbol index when subclassing inherits key coercions the superclass does not accumulate coerced attributes from subclasses when using circular coercion with a proc on one side coerces CategoryHash[:products] correctly coerces ProductHash[:categories] correctly without a proc on either side fails with a NameError since the other class is not defined yet #coerce_value with strict: true coerces any value of the exact right class coerces values from a #replace call does not coerce superclasses core types coerces String to Integer when possible coerces non-numeric from String to Integer raises a CoercionError when coercion is not possible coerces Integer to String coerces Numeric to String can coerce via a proc Hashie::Extensions::Dash::Coercion does the coercion of properties Hashie::Extensions::Dash::IndifferentAccess updates when included in Trash gets the expected behaviour when included in Dash extends with the patch once initialized with string key initialized with both prefers last assignment string, then symbol symbol then string Hashie::Extensions::DeepFetch #deep_fetch extracts a value from a nested hash extracts a value from a nested array when one of the keys is not present when a block is provided returns the value of the block when a block is not provided when the nested object is an array raises an UndefinedPathError when the nested object is a hash raises a UndefinedPathError when the nested object is missing raises an UndefinedPathError when the nested object is nil raises an UndefinedPathError Hashie::Extensions::DeepFind #deep_find detects a value from a nested hash detects a value from a nested array returns nil if it does not find a match #deep_find_all detects all values from a nested hash returns nil if it does not find any matches when match value is hash itself detects all values from a nested hash on an ActiveSupport::HashWithIndifferentAccess #deep_find indifferently detects a value from a nested hash indifferently detects a value from a nested array indifferently returns nil if it does not find a match #deep_find_all indifferently detects all values from a nested hash indifferently returns nil if it does not find any matches on a Hash including Hashie::Extensions::IndifferentAccess #deep_find indifferently detects a value from a nested hash indifferently detects a value from a nested array indifferently returns nil if it does not find a match #deep_find_all indifferently detects all values from a nested hash indifferently returns nil if it does not find any matches Hashie::Extensions::DeepLocate .deep_locate locates enumerables for which the given comparator returns true for at least one element returns an empty array if nothing was found if called with a non-callable comparator creates a key comparator on-th-fly if extending an existing object adds #deep_locate if included in a hash adds #deep_locate on an ActiveSupport::HashWithIndifferentAccess can locate symbolic keys can locate string keys Hashie::Extensions::DeepMerge should return initial hash for arguments that are not hash without &block deep merges two hashes deep merges another hash in place via bang method merges new nested hash entries by value, not by reference with &block deep merges two hashes deep merges another hash in place via bang method from extended object does not raise error deep merges two hashes deep merges another hash in place via bang method Hashie::Extensions::IgnoreUndeclared included in Trash silently ignores undeclared properties on initialization works with translated properties (with symbol keys) works with translated properties (with string keys) requires properties to be declared on assignment combined with DeepMerge deep merges Hashie::Extensions::IndifferentAccess #merge indifferently merges in a hash #merge! indifferently merges in a hash when included in dash initialize with a symbol when translating properties and ignoring undeclared and the hash keys are strings sets the property and the hash keys are symbols sets the property and there are undeclared keys sets the property with merge initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with array initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with try convert initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil Hashie::Extensions::IndifferentAccess with merge initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with array initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with try convert initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with coercion supports coercion for ActiveSupport::HashWithIndifferentAccess Mash with indifferent access is able to be created for a deep nested HashWithIndifferentAccess Hashie::Extensions::KeyConversion should respond to #stringify_keys should respond to #stringify_keys! should respond to #symbolize_keys should respond to #symbolize_keys! Hashie::Extensions::Mash::KeepOriginalKeys keeps the keys in the resulting hash identical to the original indifferently responds to keys responds to all method accessors like a Mash keeps the keys that are directly passed without converting them Hashie::Extensions::Mash::SafeAssignment when included in Mash when not attempting to override a method assigns just fine when attempting to override a method raises an error when attempting to override a private method raises an error when attempting to initialize with predefined method raises an error when setting as a hash key still raises if conflicts with a method Hashie::Extensions::Mash::SymbolizeKeys raises an error when included in a class that is not a Mash symbolizes all keys in the Mash implicit to_hash on double splat is converted on method calls is converted on explicit operator call Hashie::Extensions::MergeInitializer initializes with no arguments initializes with a hash initializes with a hash and a default Hashie::Extensions::MethodReader reads string keys from the method reads symbol keys from the method reads nil and false values out properly raises a NoMethodError for undefined keys returns false for undefined keys if key with question has been called returns true for defined keys if key with question has been called #respond_to? is true for string keys is true for symbol keys is false for non-keys Hashie::Extensions::MethodWriter writes from a method call converts the key using the #convert_key method raises NoMethodError on non equals-ending methods #respond_to? correctly Hashie::Extensions::MethodQuery is true for non-nil string key values is true for non-nil symbol key values is false for false key values is false for nil key values raises a NoMethodError for non-set keys #respond_to? for existing string keys #respond_to? for existing symbol keys does not #respond_to? for non-existent keys Hashie::Extensions::MethodAccess includes all of the other method mixins Hashie::Extensions::MethodOverridingWriter writes from a method call convertes the key using the #convert_key method raises NoMethodError on non equals-ending methods #respond_to_missing? correctly when writing a Hash method overrides the original method aliases the method with two leading underscores does not re-alias when overriding an already overridden method Hashie::Extensions::MethodAccessWithOverride includes all of the other method mixins Hashie::Extensions::StrictKeyAccess .new no defaults at initialization behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error with defaults at initialization behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error .[] behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error Hashie::Extensions::StringifyKeys #stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays returns itself class methods .stringify_keys converts keys to strings does not alter the original .stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays singleton methods .stringify_keys does not raise error produces expected stringified hash .stringify_keys! does not raise error produces expected stringified hash Hashie .stringify_keys converts keys to strings does not alter the original .stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays Hashie::Extensions::SymbolizeKeys #symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays returns itself #symbolize_keys converts keys to symbols does not alter the original class methods .symbolize_keys converts keys to symbols does not alter the original .symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays singleton methods .symbolize_keys does not raise error produces expected symbolized hash .symbolize_keys! does not raise error produces expected symbolized hash Hashie .symbolize_keys converts keys to symbols does not alter the original .symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays Hash is convertible to a Hashie::Mash #stringify_keys! turns all keys into strings #stringify_keys! turns all keys into strings recursively #stringify_keys returns a hash with stringified keys #to_hash returns a hash with same keys #to_hash with stringify_keys set to true returns a hash with stringified_keys #to_hash with symbolize_keys set to true returns a hash with symbolized keys #to_hash should not blow up when #to_hash doesn't accept arguments when the value is an object that respond_to to_hash #to_hash returns a hash with same keys #to_hash with stringify_keys set to true returns a hash with stringified_keys #to_hash with symbolize_keys set to true returns a hash with symbolized keys Hashie::Mash inherits from Hash sets hash values through method= calls retrieves set values through method calls retrieves set values through blocks retrieves set values through blocks with method calls tests for already set values when passed a ? method returns false on a ? method if a value has been set to nil or false makes all [] and []= into strings for consistency has a to_s that is identical to its inspect returns nil instead of raising an error for attribute-esque method calls returns the default value if set like Hash gracefully handles being accessed with arguments maintains indifferent access when nested returns a Hashie::Mash when passed a bang method to a non-existenct key returns the existing value when passed a bang method for an existing key returns a Hashie::Mash when passed an under bang method to a non-existenct key returns the existing value when passed an under bang method for an existing key #initializing_reader returns a Hashie::Mash when passed a non-existent key allows for multi-level assignment through bang methods allows for multi-level under bang testing does not call super if id is not a key returns the value if id is a key does not call super if type is not a key returns the value if type is a key logs a warning when overriding built-in methods can set keys more than once and does not warn when doing so does not write to the logger when warnings are disabled cannot disable logging on the base Mash carries over the disable for warnings on grandchild classes converts hash assignments into Hashie::Mashes does not convert the type of Hashie::Mashes childs to Hashie::Mash does not change the class of Mashes when converted respects the class when passed a bang method for a non-existent key respects the class when passed an under bang method for a non-existent key respects the class when converting the value respects another subclass when converting the value updating #deep_update recursively Hashie::Mash Hashie::Mashes and hashes together converts values only once makes #update deep by default clones before a #deep_merge default #merge is deep accepts a block copies values for non-duplicate keys when a block is supplied shallow update shallowly Hashie::Mash Hashie::Mashes and hashes together clones before a #regular_merge default #merge is shallow #replace returns self sets all specified keys to their corresponding values leaves only specified keys delete deletes with String key deletes with Symbol key #respond_to? responds to a normal method responds to a set key responds to a set key with a suffix is able to access the suffixed key as a method responds to an unknown key with a suffix is able to access an unknown suffixed key as a method does not respond to an unknown key without a suffix #initialize converts an existing hash to a Hashie::Mash converts hashes recursively into Hashie::Mashes converts hashes in arrays into Hashie::Mashes converts an existing Hashie::Mash into a Hashie::Mash accepts a default block allows assignment of an empty array in a default block allows assignment of a non-empty array in a default block allows assignment of an empty hash in a default block allows assignment of a non-empty hash in a default block converts Hashie::Mashes within Arrays back to Hashes #fetch when key exists returns the value returns the value even if the value is falsy when key has other than original but acceptable type returns the value when key does not exist raises KeyError with default value given returns default value returns default value even if it is falsy with block given returns default value #to_hash returns a standard Hash includes all keys converts keys to symbols when symbolize_keys option is true leaves keys as strings when symbolize_keys option is false symbolizes keys recursively #stringify_keys turns all keys into strings recursively #values_at when the original type is given returns the values when a different, but acceptable type is given returns the values when a key is given that is not in the Mash returns nil for that value .load(filename, options = {}) if the file exists should be a kind of Hashie::Mash return a Mash from a file freeze the attribtues if the fils does not exists raise an ArgumentError if the file is passed as Pathname return a Mash from a file results are cached cache the loaded yml file #to_module(mash_method_name) defines a settings method on the klass class that extends the module when a settings_method_name is set defines a settings method on the klass class that extends the module #extractable_options? can be extracted from an array #reverse_merge unifies strings and symbols does not overwrite values when using with subclass creates an instance of subclass #dig accepts both string and symbol as key with numeric key accepts a numeric value as key Hashie::Extensions::Parsers::YamlErbParser .perform a file should be a kind of Hash parses YAML after interpolating ERB Pathname "#perform" can be done in case of path is a Pathname object. Hashie::Rash finds strings finds regexps finds other objects finds numbers from ranges finds floats from ranges evaluates proc values finds using the find method raises in find unless a key matches yields in find unless a key matches gives a default value responds to hash methods Hashie::Trash raises an error when :from have the same value as property translating properties adds the property to the list creates a method for reading the property creates a method for writing the property creates a method for writing the translated property does not create a method for reading the translated property maintains translations hash mapping from the original to the translated name maintains inverse translations hash mapping from the translated to the original name #permitted_input_keys contain the :from key of properties with translations standard properties #permitted_input_keys contain names of properties without translations writing to properties does not write to a non-existent property using []= writes to an existing property using []= writes to a translated property using []= reads/writes to an existing property using a method call writes to an translated property using a method call writes to a translated property using #replace writes to a non-translated property using #replace initializing with a Hash does not initialize non-existent properties sets the desired properties sets the translated properties with both the translated property and the property sets the desired properties translating properties using a proc translates the value given on initialization with the given lambda does not translate the value if given with the right property translates the value given as property with the given lambda does not translate the value given as right property translating multiple properties using a proc translates the first key translates the second key maintains translations hash mapping from the original to the translated name uses with or transform_with interchangeably translates the value given as property with the given lambda does not translate the value given as right property translating properties without from option using a proc translates the value given as property with the given lambda transforms the value when given in constructor when :from option is given does not override the :from option in the constructor does not override the :from option when given as property inheritable transforms inherit properties transforms replaces property transform inheritable translations inherit properties translations when subclassing keeps translation definitions in subclasses Hashie::Utils .method_information states the module or class that a native method was defined in states the line a Ruby method was defined at Hashie has a version Hashie .logger is available via an accessor omniauth does not log anything to STDOUT when initializing W, [2021-10-05T19:21:53.349700 #942435] WARN -- : You are setting a key that conflicts with a built-in method OmniAuth::AuthHash::InfoHash#name defined at /usr/lib/ruby/vendor_ruby/omniauth/auth_hash.rb:34. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method. works partial-rails when Rails constant is present but the railties are not does not raise an exception when we require hashie Finished in 0.59704 seconds (files took 1.05 seconds to load) 650 examples, 0 failures /usr/bin/ruby2.5 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.5 │ └──────────────────────────────────────────────────────────────────────────────┘ GEM_PATH=debian/ruby-hashie/usr/share/rubygems-integration/all:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all ruby2.5 -e gem\ \"hashie\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.5 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=/build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5/debian/ruby-hashie/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-hashie/usr/share/rubygems-integration/all:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all ruby2.5 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.5 /usr/bin/rspec ./spec/hashie/array_spec.rb ./spec/hashie/clash_spec.rb ./spec/hashie/dash_spec.rb ./spec/hashie/extensions/autoload_spec.rb ./spec/hashie/extensions/coercion_spec.rb ./spec/hashie/extensions/dash/coercion_spec.rb ./spec/hashie/extensions/dash/indifferent_access_spec.rb ./spec/hashie/extensions/deep_fetch_spec.rb ./spec/hashie/extensions/deep_find_spec.rb ./spec/hashie/extensions/deep_locate_spec.rb ./spec/hashie/extensions/deep_merge_spec.rb ./spec/hashie/extensions/ignore_undeclared_spec.rb ./spec/hashie/extensions/indifferent_access_spec.rb ./spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb ./spec/hashie/extensions/key_conversion_spec.rb ./spec/hashie/extensions/mash/keep_original_keys_spec.rb ./spec/hashie/extensions/mash/safe_assignment_spec.rb ./spec/hashie/extensions/mash/symbolize_keys_spec.rb ./spec/hashie/extensions/merge_initializer_spec.rb ./spec/hashie/extensions/method_access_spec.rb ./spec/hashie/extensions/strict_key_access_spec.rb ./spec/hashie/extensions/stringify_keys_spec.rb ./spec/hashie/extensions/symbolize_keys_spec.rb ./spec/hashie/hash_spec.rb ./spec/hashie/mash_spec.rb ./spec/hashie/parsers/yaml_erb_parser_spec.rb ./spec/hashie/rash_spec.rb ./spec/hashie/trash_spec.rb ./spec/hashie/utils_spec.rb ./spec/hashie/version_spec.rb ./spec/hashie_spec.rb ./spec/integration/omniauth/integration_spec.rb ./spec/integration/rails-without-dependency/integration_spec.rb --format documentation Array #dig works with a string index works with a numeric index when array is empty works with a first numeric and next string index throws an error with first string and next numeric index Hashie::Clash is able to set an attribute via method_missing is able to set multiple attributes converts multiple arguments into an array is able to use bang notation to create a new Clash on a key is able to chain onto the new Clash when using bang notation is able to jump back up to the parent in the chain with #_end! merges rather than replaces existing keys is able to replace all of its own keys with #replace merges multiple bang notation calls raises an exception when method is missing when inherited bang nodes are instances of a subclass merged nodes are instances of a subclass DashTestDefaultProc as_json behaves correctly with default proc DashTest subclasses Hashie::Hash lists all set properties in inspect should respond to #first_name should respond to #first_name= should not respond to #nonexistent errors out for a non-existent property errors out when attempting to set a required property to nil errors out when message added to not required property #to_s should eq "#" #count should be zero writing to properties fails writing a required property to nil fails writing a required property to nil using []= fails writing to a non-existent property using []= works for an existing property using []= works for an existing property using a method call reading from properties fails reading from a non-existent property using [] is able to retrieve properties through blocks is able to retrieve properties through blocks with method calls reading from deferred properties evaluates proc after initial read does not evalute proc after subsequent reads reading from a deferred property based on context provides the current hash as context for evaluation converting from a Mash without keeping the original keys does not pick up the property from the stringified key when keeping the original keys picks up the property from the original key #new fails with non-existent properties sets properties that it is able to accepts nil accepts block to define a global default fails when required values are missing does not overwrite default values #merge creates a new instance of the Dash merges the given hash fails with non-existent properties errors out when attempting to set a required property to nil given a block sets merged key's values to the block's return value #merge! modifies the existing instance of the Dash merges the given hash fails with non-existent properties errors out when attempting to set a required property to nil given a block sets merged key's values to the block's return value properties lists defined properties checks if a property exists checks if a property is required doesnt include property from subclass lists declared defaults allows properties that end in bang #replace return self sets all specified keys to their corresponding values leaves only specified keys and keys with default values when replacing keys with default values sets all specified keys to their corresponding values #update_attributes!(params) update the attributes when there is coercion update the attributes when required property is update to nil raise an ArgumentError when a default property is update to nil set the property back to the default value Hashie::Dash inheritance reports empty properties when nothing defined inherits properties downwards doesnt inherit properties upwards allows overriding a default on an existing property allows clearing an existing default allows nil defaults SubclassedTest should respond to #first_name should respond to #first_name= should respond to #last_name should respond to #last_name= has one additional property didn't override superclass inheritance logic #count should be zero ConditionallyRequiredTest does not allow a conditionally required property to be set to nil if required allows a conditionally required property to be set to nil if not required allows a conditionally required property to be set if required MixedPropertiesTest should respond to #string should respond to #symbol property? fetch double define assign Dynamic Dash Class define property with method access #test should eq "value" #test? should eq true Hashie::Extensions autloads constants should be const defined :MethodAccess should be const defined :Coercion should be const defined :DeepMerge should be const defined :IgnoreUndeclared should be const defined :IndifferentAccess should be const defined :MergeInitializer should be const defined :MethodAccess should be const defined :MethodQuery should be const defined :MethodReader should be const defined :MethodWriter should be const defined :StringifyKeys should be const defined :SymbolizeKeys should be const defined :DeepFetch should be const defined :DeepFind should be const defined :PrettyInspect should be const defined :KeyConversion should be const defined :MethodAccessWithOverride Hashie::Extensions::Coercion #coerce_key should be respond to :coerce_key runs through coerce on a specified key skips unnecessary coercions supports an array of keys supports coercion for Array supports coercion for Set supports coercion for Set of primitive supports coercion for Hash supports coercion for Hash with primitive as value calls #new if no coerce method is available coerces when the merge initializer is used nesting does not add coercions to superclass coerces nested objects coerces nested arrays coerces nested hashes when repetitively including the module does not raise a stack overflow error coercing core types coerces from String to Integer via to_i coerces from Integer to Integer via to_i coerces from Rational to Integer via to_i coerces from String to Float via to_f coerces from Integer to Float via to_f coerces from Rational to Float via to_f coerces from String to String via to_s coerces from Integer to String via to_s coerces from Rational to String via to_s coerces from String to String via to_s coerces from Symbol to String via to_s coerces from String to Symbol via to_sym coerces from Symbol to Symbol via to_sym can coerce String to Rational when possible can coerce String to Complex when possible coerces collections with core types can coerce via a proc raises errors for non-coercable types can coerce false does not coerce nil when #replace is used coerces relevant keys sets correct values when used with a Mash coerces with instance initialization coerces when setting with attribute style coerces when setting with string index coerces when setting with symbol index when used with a Trash coerces with instance initialization when used with IndifferentAccess to coerce a Mash coerces with instance initialization coerces when setting with string index coerces when setting with symbol index when subclassing inherits key coercions the superclass does not accumulate coerced attributes from subclasses when using circular coercion with a proc on one side coerces CategoryHash[:products] correctly coerces ProductHash[:categories] correctly without a proc on either side fails with a NameError since the other class is not defined yet #coerce_value with strict: true coerces any value of the exact right class coerces values from a #replace call does not coerce superclasses core types coerces String to Integer when possible coerces non-numeric from String to Integer raises a CoercionError when coercion is not possible coerces Integer to String coerces Numeric to String can coerce via a proc Hashie::Extensions::Dash::Coercion does the coercion of properties Hashie::Extensions::Dash::IndifferentAccess updates when included in Trash gets the expected behaviour when included in Dash extends with the patch once initialized with string key initialized with both prefers last assignment string, then symbol symbol then string Hashie::Extensions::DeepFetch #deep_fetch extracts a value from a nested hash extracts a value from a nested array when one of the keys is not present when a block is provided returns the value of the block when a block is not provided when the nested object is an array raises an UndefinedPathError when the nested object is a hash raises a UndefinedPathError when the nested object is missing raises an UndefinedPathError when the nested object is nil raises an UndefinedPathError Hashie::Extensions::DeepFind #deep_find detects a value from a nested hash detects a value from a nested array returns nil if it does not find a match #deep_find_all detects all values from a nested hash returns nil if it does not find any matches when match value is hash itself detects all values from a nested hash on an ActiveSupport::HashWithIndifferentAccess #deep_find indifferently detects a value from a nested hash indifferently detects a value from a nested array indifferently returns nil if it does not find a match #deep_find_all indifferently detects all values from a nested hash indifferently returns nil if it does not find any matches on a Hash including Hashie::Extensions::IndifferentAccess #deep_find indifferently detects a value from a nested hash indifferently detects a value from a nested array indifferently returns nil if it does not find a match #deep_find_all indifferently detects all values from a nested hash indifferently returns nil if it does not find any matches Hashie::Extensions::DeepLocate .deep_locate locates enumerables for which the given comparator returns true for at least one element returns an empty array if nothing was found if called with a non-callable comparator creates a key comparator on-th-fly if extending an existing object adds #deep_locate if included in a hash adds #deep_locate on an ActiveSupport::HashWithIndifferentAccess can locate symbolic keys can locate string keys Hashie::Extensions::DeepMerge should return initial hash for arguments that are not hash without &block deep merges two hashes deep merges another hash in place via bang method merges new nested hash entries by value, not by reference with &block deep merges two hashes deep merges another hash in place via bang method from extended object does not raise error deep merges two hashes deep merges another hash in place via bang method Hashie::Extensions::IgnoreUndeclared included in Trash silently ignores undeclared properties on initialization works with translated properties (with symbol keys) works with translated properties (with string keys) requires properties to be declared on assignment combined with DeepMerge deep merges Hashie::Extensions::IndifferentAccess #merge indifferently merges in a hash #merge! indifferently merges in a hash when included in dash initialize with a symbol when translating properties and ignoring undeclared and the hash keys are strings sets the property and the hash keys are symbols sets the property and there are undeclared keys sets the property with merge initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with array initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with try convert initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set #fetch works like normal fetch, but indifferent returns the same instance of the hash that was set returns the same instance of the array that was set returns the same instance of the string that was set returns the same instance of the object that was set yields with key name if key does not exists #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil Hashie::Extensions::IndifferentAccess with merge initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with array initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with try convert initializer it should behave like hash with indifferent access is able to access via string or symbol #values_at indifferently finds values #fetch works like normal fetch, but indifferent #delete deletes indifferently #key? finds it indifferently is aliased as include? is aliased as member? is aliased as has_key? #update allows keys to be indifferent still recursively injects indifference into sub-hashes does not change the ancestors of the injected object class #replace returns self removes old keys creates new keys with indifferent access #try_convert with conversion is a subject without conversion is nil with coercion supports coercion for ActiveSupport::HashWithIndifferentAccess Mash with indifferent access is able to be created for a deep nested HashWithIndifferentAccess Hashie::Extensions::KeyConversion should respond to #stringify_keys should respond to #stringify_keys! should respond to #symbolize_keys should respond to #symbolize_keys! Hashie::Extensions::Mash::KeepOriginalKeys keeps the keys in the resulting hash identical to the original indifferently responds to keys responds to all method accessors like a Mash keeps the keys that are directly passed without converting them Hashie::Extensions::Mash::SafeAssignment when included in Mash when not attempting to override a method assigns just fine when attempting to override a method raises an error when attempting to override a private method raises an error when attempting to initialize with predefined method raises an error when setting as a hash key still raises if conflicts with a method Hashie::Extensions::Mash::SymbolizeKeys raises an error when included in a class that is not a Mash symbolizes all keys in the Mash implicit to_hash on double splat is converted on method calls is converted on explicit operator call Hashie::Extensions::MergeInitializer initializes with no arguments initializes with a hash initializes with a hash and a default Hashie::Extensions::MethodReader reads string keys from the method reads symbol keys from the method reads nil and false values out properly raises a NoMethodError for undefined keys returns false for undefined keys if key with question has been called returns true for defined keys if key with question has been called #respond_to? is true for string keys is true for symbol keys is false for non-keys Hashie::Extensions::MethodWriter writes from a method call converts the key using the #convert_key method raises NoMethodError on non equals-ending methods #respond_to? correctly Hashie::Extensions::MethodQuery is true for non-nil string key values is true for non-nil symbol key values is false for false key values is false for nil key values raises a NoMethodError for non-set keys #respond_to? for existing string keys #respond_to? for existing symbol keys does not #respond_to? for non-existent keys Hashie::Extensions::MethodAccess includes all of the other method mixins Hashie::Extensions::MethodOverridingWriter writes from a method call convertes the key using the #convert_key method raises NoMethodError on non equals-ending methods #respond_to_missing? correctly when writing a Hash method overrides the original method aliases the method with two leading underscores does not re-alias when overriding an already overridden method Hashie::Extensions::MethodAccessWithOverride includes all of the other method mixins Hashie::Extensions::StrictKeyAccess .new no defaults at initialization behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error with defaults at initialization behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error .[] behaves like StrictKeyAccess with valid key set returns value access returns value lookup returns key behaves like StrictKeyAccess with invalid key access raises an error lookup raises an error behaves like StrictKeyAccess raises KeyError instead of allowing defaults #default raises an error #default= raises an error #default_proc raises an error #default_proc= raises an error Hashie::Extensions::StringifyKeys #stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays returns itself class methods .stringify_keys converts keys to strings does not alter the original .stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays singleton methods .stringify_keys does not raise error produces expected stringified hash .stringify_keys! does not raise error produces expected stringified hash Hashie .stringify_keys converts keys to strings does not alter the original .stringify_keys! converts keys to strings converts nested instances of the same class converts nested hashes converts nested arrays Hashie::Extensions::SymbolizeKeys #symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays returns itself #symbolize_keys converts keys to symbols does not alter the original class methods .symbolize_keys converts keys to symbols does not alter the original .symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays singleton methods .symbolize_keys does not raise error produces expected symbolized hash .symbolize_keys! does not raise error produces expected symbolized hash Hashie .symbolize_keys converts keys to symbols does not alter the original .symbolize_keys! converts keys to symbols converts nested instances of the same class converts nested hashes performs deep conversion within nested arrays Hash is convertible to a Hashie::Mash #stringify_keys! turns all keys into strings #stringify_keys! turns all keys into strings recursively #stringify_keys returns a hash with stringified keys #to_hash returns a hash with same keys #to_hash with stringify_keys set to true returns a hash with stringified_keys #to_hash with symbolize_keys set to true returns a hash with symbolized keys #to_hash should not blow up when #to_hash doesn't accept arguments when the value is an object that respond_to to_hash #to_hash returns a hash with same keys #to_hash with stringify_keys set to true returns a hash with stringified_keys #to_hash with symbolize_keys set to true returns a hash with symbolized keys Hashie::Mash inherits from Hash sets hash values through method= calls retrieves set values through method calls retrieves set values through blocks retrieves set values through blocks with method calls tests for already set values when passed a ? method returns false on a ? method if a value has been set to nil or false makes all [] and []= into strings for consistency has a to_s that is identical to its inspect returns nil instead of raising an error for attribute-esque method calls returns the default value if set like Hash gracefully handles being accessed with arguments maintains indifferent access when nested returns a Hashie::Mash when passed a bang method to a non-existenct key returns the existing value when passed a bang method for an existing key returns a Hashie::Mash when passed an under bang method to a non-existenct key returns the existing value when passed an under bang method for an existing key #initializing_reader returns a Hashie::Mash when passed a non-existent key allows for multi-level assignment through bang methods allows for multi-level under bang testing does not call super if id is not a key returns the value if id is a key does not call super if type is not a key returns the value if type is a key logs a warning when overriding built-in methods can set keys more than once and does not warn when doing so does not write to the logger when warnings are disabled cannot disable logging on the base Mash carries over the disable for warnings on grandchild classes converts hash assignments into Hashie::Mashes does not convert the type of Hashie::Mashes childs to Hashie::Mash does not change the class of Mashes when converted respects the class when passed a bang method for a non-existent key respects the class when passed an under bang method for a non-existent key respects the class when converting the value respects another subclass when converting the value updating #deep_update recursively Hashie::Mash Hashie::Mashes and hashes together converts values only once makes #update deep by default clones before a #deep_merge default #merge is deep accepts a block copies values for non-duplicate keys when a block is supplied shallow update shallowly Hashie::Mash Hashie::Mashes and hashes together clones before a #regular_merge default #merge is shallow #replace returns self sets all specified keys to their corresponding values leaves only specified keys delete deletes with String key deletes with Symbol key #respond_to? responds to a normal method responds to a set key responds to a set key with a suffix is able to access the suffixed key as a method responds to an unknown key with a suffix is able to access an unknown suffixed key as a method does not respond to an unknown key without a suffix #initialize converts an existing hash to a Hashie::Mash converts hashes recursively into Hashie::Mashes converts hashes in arrays into Hashie::Mashes converts an existing Hashie::Mash into a Hashie::Mash accepts a default block allows assignment of an empty array in a default block allows assignment of a non-empty array in a default block allows assignment of an empty hash in a default block allows assignment of a non-empty hash in a default block converts Hashie::Mashes within Arrays back to Hashes #fetch when key exists returns the value returns the value even if the value is falsy when key has other than original but acceptable type returns the value when key does not exist raises KeyError with default value given returns default value returns default value even if it is falsy with block given returns default value #to_hash returns a standard Hash includes all keys converts keys to symbols when symbolize_keys option is true leaves keys as strings when symbolize_keys option is false symbolizes keys recursively #stringify_keys turns all keys into strings recursively #values_at when the original type is given returns the values when a different, but acceptable type is given returns the values when a key is given that is not in the Mash returns nil for that value .load(filename, options = {}) if the file exists should be a kind of Hashie::Mash return a Mash from a file freeze the attribtues if the fils does not exists raise an ArgumentError if the file is passed as Pathname return a Mash from a file results are cached cache the loaded yml file #to_module(mash_method_name) defines a settings method on the klass class that extends the module when a settings_method_name is set defines a settings method on the klass class that extends the module #extractable_options? can be extracted from an array #reverse_merge unifies strings and symbols does not overwrite values when using with subclass creates an instance of subclass #dig accepts both string and symbol as key with numeric key accepts a numeric value as key Hashie::Extensions::Parsers::YamlErbParser .perform a file should be a kind of Hash parses YAML after interpolating ERB Pathname "#perform" can be done in case of path is a Pathname object. Hashie::Rash finds strings finds regexps finds other objects finds numbers from ranges finds floats from ranges evaluates proc values finds using the find method raises in find unless a key matches yields in find unless a key matches gives a default value responds to hash methods Hashie::Trash raises an error when :from have the same value as property translating properties adds the property to the list creates a method for reading the property creates a method for writing the property creates a method for writing the translated property does not create a method for reading the translated property maintains translations hash mapping from the original to the translated name maintains inverse translations hash mapping from the translated to the original name #permitted_input_keys contain the :from key of properties with translations standard properties #permitted_input_keys contain names of properties without translations writing to properties does not write to a non-existent property using []= writes to an existing property using []= writes to a translated property using []= reads/writes to an existing property using a method call writes to an translated property using a method call writes to a translated property using #replace writes to a non-translated property using #replace initializing with a Hash does not initialize non-existent properties sets the desired properties sets the translated properties with both the translated property and the property sets the desired properties translating properties using a proc translates the value given on initialization with the given lambda does not translate the value if given with the right property translates the value given as property with the given lambda does not translate the value given as right property translating multiple properties using a proc translates the first key translates the second key maintains translations hash mapping from the original to the translated name uses with or transform_with interchangeably translates the value given as property with the given lambda does not translate the value given as right property translating properties without from option using a proc translates the value given as property with the given lambda transforms the value when given in constructor when :from option is given does not override the :from option in the constructor does not override the :from option when given as property inheritable transforms inherit properties transforms replaces property transform inheritable translations inherit properties translations when subclassing keeps translation definitions in subclasses Hashie::Utils .method_information states the module or class that a native method was defined in states the line a Ruby method was defined at Hashie has a version Hashie .logger is available via an accessor omniauth /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated does not log anything to STDOUT when initializing W, [2021-10-05T19:21:55.817661 #942445] WARN -- : You are setting a key that conflicts with a built-in method OmniAuth::AuthHash::InfoHash#name defined at /usr/lib/ruby/vendor_ruby/omniauth/auth_hash.rb:34. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method. /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1068: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1069: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1068: warning: constant ::Fixnum is deprecated works partial-rails when Rails constant is present but the railties are not does not raise an exception when we require hashie Finished in 0.5888 seconds (files took 0.99724 seconds to load) 650 examples, 0 failures ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -i -O--buildsystem=ruby dh_ruby_fixdocs -i -O--buildsystem=ruby debian/rules override_dh_installchangelogs make[1]: Entering directory '/build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5' dh_installchangelogs CHANGELOG.md make[1]: Leaving directory '/build/ruby-hashie-5lYVCp/ruby-hashie-3.5.5' dh_perl -i -O--buildsystem=ruby dh_link -i -O--buildsystem=ruby dh_strip_nondeterminism -i -O--buildsystem=ruby dh_compress -X.rb -i -O--buildsystem=ruby dh_fixperms -i -O--buildsystem=ruby dh_missing -i -O--buildsystem=ruby dh_installdeb -i -O--buildsystem=ruby dh_gencontrol -i -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-hashie: unknown substitution variable ${shlibs:Depends} dh_md5sums -i -O--buildsystem=ruby dh_builddeb -i -O--buildsystem=ruby dpkg-deb: building package 'ruby-hashie' in '../ruby-hashie_3.5.5-2_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../ruby-hashie_3.5.5-2_all.changes dpkg-genchanges: info: binary-only arch-indep upload (source code and arch-specific packages not included) dpkg-source --after-build ruby-hashie-3.5.5 dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/ruby-hashie-5lYVCp /tmp/ruby-hashie-3.5.5-2gx0047kf I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.4S11zwGop9... I: success in 237.4238 seconds md5: ruby-hashie_3.5.5-2_all.deb: OK sha1: ruby-hashie_3.5.5-2_all.deb: OK sha256: ruby-hashie_3.5.5-2_all.deb: OK Checksums: OK