{"id":81,"name":null,"description":"Define equality, equivalency and hash methods automatically","url":"https://github.com/dkubb/equalizer","last_synced_at":"2026-04-30T16:30:24.052Z","repository":{"id":4477670,"uuid":"5616644","full_name":"dkubb/equalizer","owner":"dkubb","description":"Define equality, equivalency and hash methods automatically","archived":false,"fork":false,"pushed_at":"2026-03-20T14:17:22.000Z","size":176,"stargazers_count":202,"open_issues_count":0,"forks_count":16,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-19T04:06:03.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkubb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-08-30T15:16:06.000Z","updated_at":"2026-03-20T14:17:11.000Z","dependencies_parsed_at":"2026-04-03T03:00:48.491Z","dependency_job_id":null,"html_url":"https://github.com/dkubb/equalizer","commit_stats":{"total_commits":203,"total_committers":11,"mean_commits":"18.454545454545453","dds":0.5763546798029557,"last_synced_commit":"7c0de74a8205b13d348ab0440f80251327edb3d7"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dkubb/equalizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32264431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"dkubb","name":"Dan Kubb","uuid":"133","kind":"user","description":"","email":"","website":null,"location":"Mission, BC, Canada","twitter":"dkubb","company":"Betterment","icon_url":"https://avatars.githubusercontent.com/u/133?v=4","repositories_count":42,"last_synced_at":"2023-04-10T00:16:29.799Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dkubb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:34:31.903Z","updated_at":"2023-04-10T00:16:30.094Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb/repositories"},"packages":[{"id":13605391,"name":"ruby-equalizer","ecosystem":"debian","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:20:06.317Z","latest_release_published_at":"2026-02-11T11:20:06.317Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-13T05:01:02.405Z","created_at":"2026-02-11T11:20:06.138Z","updated_at":"2026-03-13T05:01:02.416Z","registry_url":"https://tracker.debian.org/pkg/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":"https://packages.debian.org/buster/ruby-equalizer","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:05.442Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-equalizer?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-04-27T18:20:39.693Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13406552,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T15:08:35.183Z","latest_release_published_at":"2026-02-06T15:08:35.183Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-06T15:58:19.102Z","created_at":"2026-02-06T15:08:34.396Z","updated_at":"2026-03-06T16:04:49.628Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-27T18:20:35.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":13566355,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:38:50.772Z","latest_release_published_at":"2026-02-11T06:38:50.772Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-11T14:11:22.839Z","created_at":"2026-02-11T06:38:50.598Z","updated_at":"2026-03-11T14:11:22.839Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:56:18.062Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-27T18:20:38.741Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":13750997,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:12:59.183Z","latest_release_published_at":"2026-02-13T07:12:59.183Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-13T13:27:13.448Z","created_at":"2026-02-13T07:12:59.022Z","updated_at":"2026-03-13T13:27:13.448Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:12:59.697Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-27T18:20:36.874Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":13804282,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:19:11.632Z","latest_release_published_at":"2026-02-13T18:19:11.632Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-14T02:20:34.849Z","created_at":"2026-02-13T18:19:11.287Z","updated_at":"2026-03-14T02:20:34.850Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:19:30.299Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-27T18:20:38.051Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":13530228,"name":"ruby-equalizer","ecosystem":"debian","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:29:47.383Z","latest_release_published_at":"2026-02-10T23:29:47.383Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-14T06:22:32.895Z","created_at":"2026-02-10T23:29:47.201Z","updated_at":"2026-03-14T06:22:32.895Z","registry_url":"https://tracker.debian.org/pkg/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":"https://packages.debian.org/bullseye/ruby-equalizer","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:26:35.518Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-equalizer?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-27T18:20:39.352Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":8613125,"name":"github.com/dkubb/equalizer","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2023-12-02T02:08:52.918Z","latest_release_published_at":"2026-03-20T14:17:02.000Z","latest_release_number":"v1.0.0","last_synced_at":"2026-04-27T15:02:49.848Z","created_at":"2023-12-02T02:08:49.182Z","updated_at":"2026-04-27T15:02:49.848Z","registry_url":"https://pkg.go.dev/github.com/dkubb/equalizer","install_command":"go get github.com/dkubb/equalizer","documentation_url":"https://pkg.go.dev/github.com/dkubb/equalizer#section-documentation","metadata":{},"repo_metadata":{"id":4477670,"uuid":"5616644","full_name":"dkubb/equalizer","owner":"dkubb","description":"Define equality, equivalency and hash methods automatically","archived":false,"fork":false,"pushed_at":"2024-08-02T03:25:20.000Z","size":155,"stargazers_count":202,"open_issues_count":5,"forks_count":16,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-03T04:04:41.261Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkubb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-08-30T15:16:06.000Z","updated_at":"2025-01-05T21:14:39.000Z","dependencies_parsed_at":"2024-11-05T19:00:50.073Z","dependency_job_id":"ef93f8ce-9c66-4ff4-b820-38484f566d90","html_url":"https://github.com/dkubb/equalizer","commit_stats":{"total_commits":203,"total_committers":11,"mean_commits":"18.454545454545453","dds":0.5763546798029557,"last_synced_commit":"7c0de74a8205b13d348ab0440f80251327edb3d7"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/dkubb/equalizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268649794,"owners_count":24284194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"dkubb","name":"Dan Kubb","uuid":"133","kind":"user","description":"","email":"","website":null,"location":"Mission, BC, Canada","twitter":"dkubb","company":"Betterment","icon_url":"https://avatars.githubusercontent.com/u/133?v=4","repositories_count":42,"last_synced_at":"2023-04-10T00:16:29.799Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dkubb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:34:31.903Z","updated_at":"2023-04-10T00:16:30.094Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb/repositories"},"tags":[{"name":"v0.0.11","sha":"24e71fa222ccfdfd55a192a8749487a7a2c35cf3","kind":"tag","published_at":"2015-03-23T02:43:59.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.11","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.11/manifests"},{"name":"v0.0.10","sha":"83a992cc514a9c294d962370796bfe9346d878a9","kind":"tag","published_at":"2015-03-20T12:11:31.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.10","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"b1e59b7b2a151fecc5cc85af83275bc83d1dba89","kind":"tag","published_at":"2013-12-23T08:38:24.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.9","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"8e9411fa8f1ffbc2c46bb1c075994a0a08c549c9","kind":"tag","published_at":"2013-12-02T23:03:24.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.8","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"e4bb2a08a3b9f04821a1b54fd6cf9b1b7da7e222","kind":"commit","published_at":"2013-08-22T10:54:02.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.7","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.7/manifests"},{"name":"v0.0.5","sha":"ed5f22b675272148c50fb6e234ba96eb267a1fb3","kind":"commit","published_at":"2013-03-01T14:58:27.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.5","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.5/manifests"},{"name":"v0.0.1","sha":"730b8e56e3fcc14573a1991ac09f7ed25079dcd4","kind":"commit","published_at":"2012-11-22T05:30:57.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.1","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2025-10-08T13:12:35.305Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.801592556016239,"dependent_packages_count":9.575730298247606,"stargazers_count":3.5374394327398253,"forks_count":5.452585492389347,"docker_downloads_count":null,"average":7.3418369448482546},"purl":"pkg:golang/github.com/dkubb/equalizer","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/dkubb/equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/dkubb/equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/dkubb/equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-03T17:08:20.593Z","issues_count":10,"pull_requests_count":21,"avg_time_to_close_issue":166210.85714285713,"avg_time_to_close_pull_request":5209555.52631579,"issues_closed_count":7,"pull_requests_closed_count":19,"pull_request_authors_count":12,"issue_authors_count":8,"avg_comments_per_issue":3.9,"avg_comments_per_pull_request":3.142857142857143,"merged_pull_requests_count":15,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":14700.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/issues","maintainers":[{"login":"sferik","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sferik"},{"login":"solnic","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"mbj","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbj"},{"login":"dkubb","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"},{"login":"snusnu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/snusnu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fdkubb%2Fequalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fdkubb%2Fequalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fdkubb%2Fequalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fdkubb%2Fequalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fdkubb%2Fequalizer/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2118532,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":13712309,"name":"ruby-equalizer","ecosystem":"debian","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:28:45.518Z","latest_release_published_at":"2026-02-12T23:28:45.518Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-13T15:47:10.490Z","created_at":"2026-02-12T23:28:45.365Z","updated_at":"2026-03-13T15:47:10.490Z","registry_url":"https://tracker.debian.org/pkg/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":"https://packages.debian.org/bookworm/ruby-equalizer","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:28:46.028Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-equalizer?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-27T18:20:38.992Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":13466610,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T16:28:31.830Z","latest_release_published_at":"2026-02-09T16:28:31.830Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-09T17:05:09.483Z","created_at":"2026-02-09T16:28:29.658Z","updated_at":"2026-03-09T17:32:23.215Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-04-27T18:20:37.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":199796,"name":"equalizer","ecosystem":"rubygems","description":"Equalizer provides a simple way to define equality\n(==), equivalence (eql?), and hashing (hash) methods\nfor Ruby objects based on specified attributes. Includes\npattern matching support and clean inspect output.\n","homepage":"https://github.com/dkubb/equalizer","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":[],"namespace":null,"versions_count":11,"first_release_published_at":"2012-11-22T05:39:42.400Z","latest_release_published_at":"2026-03-20T14:17:50.032Z","latest_release_number":"1.0.0","last_synced_at":"2026-04-27T15:03:11.299Z","created_at":"2022-04-05T21:51:57.204Z","updated_at":"2026-04-27T15:03:11.299Z","registry_url":"https://rubygems.org/gems/equalizer","install_command":"gem install equalizer -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/equalizer/","metadata":{"funding":null},"repo_metadata":{"id":4477670,"uuid":"5616644","full_name":"dkubb/equalizer","owner":"dkubb","description":"Define equality, equivalency and hash methods automatically","archived":false,"fork":false,"pushed_at":"2026-03-20T14:17:22.000Z","size":176,"stargazers_count":202,"open_issues_count":0,"forks_count":16,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-19T04:06:03.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkubb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-08-30T15:16:06.000Z","updated_at":"2026-03-20T14:17:11.000Z","dependencies_parsed_at":"2026-04-03T03:00:48.491Z","dependency_job_id":null,"html_url":"https://github.com/dkubb/equalizer","commit_stats":{"total_commits":203,"total_committers":11,"mean_commits":"18.454545454545453","dds":0.5763546798029557,"last_synced_commit":"7c0de74a8205b13d348ab0440f80251327edb3d7"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dkubb/equalizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32264431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"dkubb","name":"Dan Kubb","uuid":"133","kind":"user","description":"","email":"","website":null,"location":"Mission, BC, Canada","twitter":"dkubb","company":"Betterment","icon_url":"https://avatars.githubusercontent.com/u/133?v=4","repositories_count":42,"last_synced_at":"2023-04-10T00:16:29.799Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dkubb","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:34:31.903Z","updated_at":"2023-04-10T00:16:30.094Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb/repositories"},"tags":[{"name":"v1.0.0","sha":"a9cbe3914804a058f440a9aa87ba7e11714ea00b","kind":"tag","published_at":"2026-03-20T14:17:19.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v1.0.0","html_url":"https://github.com/dkubb/equalizer/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v1.0.0/manifests"},{"name":"v0.0.11","sha":"24e71fa222ccfdfd55a192a8749487a7a2c35cf3","kind":"tag","published_at":"2015-03-23T02:43:59.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.11","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.11/manifests"},{"name":"v0.0.10","sha":"83a992cc514a9c294d962370796bfe9346d878a9","kind":"tag","published_at":"2015-03-20T12:11:31.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.10","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"b1e59b7b2a151fecc5cc85af83275bc83d1dba89","kind":"tag","published_at":"2013-12-23T08:38:24.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.9","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"8e9411fa8f1ffbc2c46bb1c075994a0a08c549c9","kind":"tag","published_at":"2013-12-02T23:03:24.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.8","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"e4bb2a08a3b9f04821a1b54fd6cf9b1b7da7e222","kind":"commit","published_at":"2013-08-22T10:54:02.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.7","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.7/manifests"},{"name":"v0.0.5","sha":"ed5f22b675272148c50fb6e234ba96eb267a1fb3","kind":"commit","published_at":"2013-03-01T14:58:27.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.5","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.5/manifests"},{"name":"v0.0.1","sha":"730b8e56e3fcc14573a1991ac09f7ed25079dcd4","kind":"commit","published_at":"2012-11-22T05:30:57.000Z","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/v0.0.1","html_url":"https://github.com/dkubb/equalizer/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dkubb/equalizer@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-27T15:03:10.908Z","dependent_packages_count":73,"downloads":128863359,"downloads_period":"total","dependent_repos_count":20583,"rankings":{"downloads":0.1488609627457321,"dependent_repos_count":0.24977419966325087,"dependent_packages_count":0.3958475039305984,"stargazers_count":4.000847448177429,"forks_count":7.1587069724913865,"docker_downloads_count":0.1393829239192248,"average":2.01557000182127},"purl":"pkg:gem/equalizer","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/equalizer","docker_dependents_count":424,"docker_downloads_count":788975036,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/equalizer/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-23T13:00:20.891Z","issues_count":10,"pull_requests_count":22,"avg_time_to_close_issue":98309116.1,"avg_time_to_close_pull_request":25660042.863636363,"issues_closed_count":10,"pull_requests_closed_count":22,"pull_request_authors_count":12,"issue_authors_count":8,"avg_comments_per_issue":4.2,"avg_comments_per_pull_request":3.0,"merged_pull_requests_count":16,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/issues","maintainers":[{"login":"sferik","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sferik"},{"login":"solnic","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"mbj","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbj"},{"login":"dkubb","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"},{"login":"snusnu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/snusnu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/equalizer/codemeta","maintainers":[{"uuid":"37696","login":"dkubb","name":null,"email":null,"url":null,"packages_count":74,"html_url":"https://rubygems.org/profiles/dkubb","role":null,"created_at":"2022-11-08T10:25:10.022Z","updated_at":"2022-11-08T10:25:10.022Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/dkubb/packages"},{"uuid":"40471","login":"mbjs","name":null,"email":null,"url":null,"packages_count":51,"html_url":"https://rubygems.org/profiles/mbjs","role":null,"created_at":"2022-11-08T10:25:10.034Z","updated_at":"2022-11-08T10:25:10.034Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/mbjs/packages"},{"uuid":"284","login":"sferik","name":null,"email":null,"url":null,"packages_count":65,"html_url":"https://rubygems.org/profiles/sferik","role":null,"created_at":"2022-11-08T10:25:10.073Z","updated_at":"2022-11-08T10:25:10.073Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/sferik/packages"},{"uuid":"43616","login":"solnic","name":null,"email":null,"url":null,"packages_count":110,"html_url":"https://rubygems.org/profiles/solnic","role":null,"created_at":"2022-11-08T10:25:10.062Z","updated_at":"2022-11-08T10:25:10.062Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/solnic/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205536,"maintainers_count":68468,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":13778769,"name":"ruby-equalizer","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:16:16.324Z","latest_release_published_at":"2026-02-13T13:16:16.324Z","latest_release_number":"0.0.11-2","last_synced_at":"2026-03-13T22:41:54.414Z","created_at":"2026-02-13T13:16:16.144Z","updated_at":"2026-03-13T22:41:54.414Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:16:16.956Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-equalizer?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-27T18:20:36.155Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":13668840,"name":"ruby-equalizer","ecosystem":"debian","description":null,"homepage":"https://github.com/dkubb/equalizer","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:22:51.095Z","latest_release_published_at":"2026-02-12T12:22:51.095Z","latest_release_number":"0.0.11-3","last_synced_at":"2026-03-14T18:07:55.946Z","created_at":"2026-02-12T12:22:50.872Z","updated_at":"2026-03-14T18:07:55.947Z","registry_url":"https://tracker.debian.org/pkg/ruby-equalizer","install_command":"apt-get install ruby-equalizer","documentation_url":"https://packages.debian.org/trixie/ruby-equalizer","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-equalizer","standards_version":"4.7.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb (\u003e= 1), rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:23:19.804Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-equalizer?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-equalizer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-equalizer/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-04-27T18:20:39.853Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}},{"id":12222335,"name":"equalizer","ecosystem":"rubygems","description":"Equalizer provides a simple way to define equality\n(==), equivalence (eql?), and hashing (hash) methods\nfor Ruby objects based on specified attributes. Includes\npattern matching support and clean inspect output.\n","homepage":"https://github.com/dkubb/equalizer","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/dkubb/equalizer","keywords_array":[],"namespace":null,"versions_count":11,"first_release_published_at":"2012-11-22T05:39:42.400Z","latest_release_published_at":"2026-03-20T14:17:50.032Z","latest_release_number":"1.0.0","last_synced_at":"2026-04-28T12:23:16.739Z","created_at":"2025-10-07T02:42:48.661Z","updated_at":"2026-04-28T13:16:56.094Z","registry_url":"https://gem.coop/gems/equalizer","install_command":"gem install equalizer -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/equalizer/","metadata":{"funding":null},"repo_metadata":{"id":4477670,"uuid":"5616644","full_name":"dkubb/equalizer","owner":"dkubb","description":"Define equality, equivalency and hash methods automatically","archived":false,"fork":false,"pushed_at":"2026-03-20T14:17:22.000Z","size":176,"stargazers_count":202,"open_issues_count":0,"forks_count":16,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-19T04:06:03.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkubb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-08-30T15:16:06.000Z","updated_at":"2026-03-20T14:17:11.000Z","dependencies_parsed_at":"2026-04-03T03:00:48.491Z","dependency_job_id":null,"html_url":"https://github.com/dkubb/equalizer","commit_stats":{"total_commits":203,"total_committers":11,"mean_commits":"18.454545454545453","dds":0.5763546798029557,"last_synced_commit":"7c0de74a8205b13d348ab0440f80251327edb3d7"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dkubb/equalizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkubb","download_url":"https://codeload.github.com/dkubb/equalizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32264431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"tags":[]},"repo_metadata_updated_at":"2026-04-28T13:16:56.094Z","dependent_packages_count":0,"downloads":128886803,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.1865338761739469,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.11894913842976323,"average":0.07637075365092753},"purl":"pkg:gem/equalizer?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/equalizer","docker_dependents_count":424,"docker_downloads_count":788975036,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/equalizer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/equalizer/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-23T13:00:20.891Z","issues_count":10,"pull_requests_count":22,"avg_time_to_close_issue":98309116.1,"avg_time_to_close_pull_request":25660042.863636363,"issues_closed_count":10,"pull_requests_closed_count":22,"pull_request_authors_count":12,"issue_authors_count":8,"avg_comments_per_issue":4.2,"avg_comments_per_pull_request":3.0,"merged_pull_requests_count":16,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/issues","maintainers":[{"login":"sferik","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sferik"},{"login":"solnic","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"mbj","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbj"},{"login":"dkubb","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"},{"login":"snusnu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/snusnu"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/equalizer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/equalizer/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/equalizer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/equalizer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/equalizer/codemeta","maintainers":[{"uuid":"284","login":"sferik","name":null,"email":null,"url":null,"packages_count":65,"html_url":"https://gem.coop/profiles/sferik","role":null,"created_at":"2025-10-07T16:55:03.853Z","updated_at":"2025-10-07T16:55:03.853Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/sferik/packages"},{"uuid":"40471","login":"mbjs","name":null,"email":null,"url":null,"packages_count":51,"html_url":"https://gem.coop/profiles/mbjs","role":null,"created_at":"2025-10-07T16:55:03.197Z","updated_at":"2025-10-07T16:55:03.197Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/mbjs/packages"},{"uuid":"37696","login":"dkubb","name":null,"email":null,"url":null,"packages_count":74,"html_url":"https://gem.coop/profiles/dkubb","role":null,"created_at":"2025-10-07T16:55:04.122Z","updated_at":"2025-10-07T16:55:04.122Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/dkubb/packages"},{"uuid":"43616","login":"solnic","name":null,"email":null,"url":null,"packages_count":105,"html_url":"https://gem.coop/profiles/solnic","role":null,"created_at":"2025-10-07T16:55:03.531Z","updated_at":"2025-10-07T16:55:03.531Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/solnic/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190389,"maintainers_count":67476,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}}],"commits":{"id":301213,"full_name":"dkubb/equalizer","default_branch":"master","total_commits":206,"total_committers":11,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":18.727272727272727,"dds":0.5825242718446602,"past_year_total_commits":3,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":3.0,"past_year_dds":0.0,"last_synced_at":"2026-04-27T15:06:31.759Z","last_synced_commit":"a9cbe3914804a058f440a9aa87ba7e11714ea00b","created_at":"2023-03-08T16:34:17.424Z","updated_at":"2026-04-27T15:06:18.866Z","committers":[{"name":"Dan Kubb","email":"dan.kubb@gmail.com","login":"dkubb","count":86},{"name":"Erik Michaels-Ober","email":"sferik@gmail.com","login":"sferik","count":75},{"name":"Markus Schirp","email":"mbj@schirp-dso.com","login":"mbj","count":20},{"name":"Markus Schirp","email":"mbj@seonic.net","login":null,"count":14},{"name":"snusnu","email":"gamsnjaga@gmail.com","login":"snusnu","count":2},{"name":"Piotr Solnica","email":"piotr.solnica@gmail.com","login":"solnic","count":2},{"name":"Myron Marston","email":"myron.marston@gmail.com","login":"myronmarston","count":2},{"name":"Anatoly Chernow","email":"f0ck1ng.namespace@gmail.com","login":"ch1c0t","count":2},{"name":"Jan Suchal","email":"johno@jsmf.net","login":"jsuchal","count":1},{"name":"Craig Little","email":"craiglttl@gmail.com","login":"craiglittle","count":1},{"name":"Akira Matsuda","email":"ronnie@dio.jp","login":"amatsuda","count":1}],"past_year_committers":[{"name":"Erik Berlin","email":"sferik@gmail.com","login":"sferik","count":3}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-27T00:00:06.983Z","repositories_count":6220619,"commits_count":899896165,"contributors_count":34880731,"owners_count":1146487,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"dkubb/equalizer","html_url":"https://github.com/dkubb/equalizer","last_synced_at":"2026-04-23T13:00:20.891Z","status":"error","issues_count":10,"pull_requests_count":22,"avg_time_to_close_issue":98309116.1,"avg_time_to_close_pull_request":25660042.863636363,"issues_closed_count":10,"pull_requests_closed_count":22,"pull_request_authors_count":12,"issue_authors_count":8,"avg_comments_per_issue":4.2,"avg_comments_per_pull_request":3.0,"merged_pull_requests_count":16,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-12T10:24:02.694Z","updated_at":"2026-04-23T13:00:20.892Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkubb%2Fequalizer/issues","issue_labels_count":{"question":1},"pull_request_labels_count":{"enhancement":2},"issue_author_associations_count":{"NONE":4,"COLLABORATOR":4,"CONTRIBUTOR":2},"pull_request_author_associations_count":{"COLLABORATOR":9,"CONTRIBUTOR":8,"NONE":3,"OWNER":2},"issue_authors":{"solnic":3,"backus":1,"ch1c0t":1,"cbandy":1,"phurni":1,"botandrose":1,"sferik":1,"jsuchal":1},"pull_request_authors":{"ch1c0t":4,"sferik":4,"mbj":3,"dkubb":2,"amatsuda":2,"ck3g":1,"craiglittle":1,"solnic":1,"markprzepiora":1,"jsuchal":1,"myronmarston":1,"snusnu":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-25T00:00:14.967Z","repositories_count":14386555,"issues_count":34396482,"pull_requests_count":112636650,"authors_count":11244842,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"sferik","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sferik"},{"login":"solnic","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"mbj","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mbj"},{"login":"dkubb","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"},{"login":"snusnu","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/snusnu"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":1,"IssueCommentEvent":1,"PushEvent":2},"last_year":{"IssueCommentEvent":1,"PushEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-09-11T23:41:02.360Z","updated_at":"2022-09-11T23:41:02.360Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/Gemfile","dependencies":[{"id":4541343586,"package_name":"devtools","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"equalizer.gemspec","sha":null,"kind":"manifest","created_at":"2022-09-11T23:41:02.476Z","updated_at":"2022-09-11T23:41:02.476Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/equalizer.gemspec","dependencies":[{"id":4541343709,"package_name":"bundler","ecosystem":"rubygems","requirements":"~\u003e 1.3, \u003e= 1.3.5","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/push.yml","sha":null,"kind":"manifest","created_at":"2026-04-03T03:00:46.450Z","updated_at":"2026-04-03T03:00:46.450Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/.github/workflows/push.yml","dependencies":[{"id":25853145522,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25853145524,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":25853145525,"package_name":"rubygems/configure-rubygems-credentials","ecosystem":"actions","requirements":"v1.0.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/quality.yml","sha":null,"kind":"manifest","created_at":"2026-04-03T03:00:46.744Z","updated_at":"2026-04-03T03:00:46.744Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/.github/workflows/quality.yml","dependencies":[{"id":25853145577,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25853145584,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2026-04-03T03:00:47.024Z","updated_at":"2026-04-03T03:00:47.024Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/.github/workflows/test.yml","dependencies":[{"id":25853145601,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25853145622,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/yard.yml","sha":null,"kind":"manifest","created_at":"2026-04-03T03:00:47.223Z","updated_at":"2026-04-03T03:00:47.223Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/.github/workflows/yard.yml","dependencies":[{"id":25853145654,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25853145668,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":25853145669,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/mutant.yml","sha":null,"kind":"manifest","created_at":"2024-11-05T19:00:49.456Z","updated_at":"2024-11-05T19:00:49.456Z","repository_link":"https://github.com/dkubb/equalizer/blob/master/.github/workflows/mutant.yml","dependencies":[{"id":20578310798,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":20578310799,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":29.036866531213537,"created_at":"2024-12-15T21:38:06.941Z","updated_at":"2026-04-30T16:30:24.052Z","avatar_url":"https://github.com/dkubb.png","language":"Ruby","monthly_downloads":0,"readme":"# Equalizer\n\n[![Gem Version](https://img.shields.io/gem/v/equalizer)](https://rubygems.org/gems/equalizer)\n[![Test](https://github.com/dkubb/equalizer/actions/workflows/test.yml/badge.svg)](https://github.com/dkubb/equalizer/actions/workflows/test.yml)\n[![Quality](https://github.com/dkubb/equalizer/actions/workflows/quality.yml/badge.svg)](https://github.com/dkubb/equalizer/actions/workflows/quality.yml)\n[![Documentation](https://github.com/dkubb/equalizer/actions/workflows/yard.yml/badge.svg)](https://github.com/dkubb/equalizer/actions/workflows/yard.yml)\n[![Mutation Testing](https://github.com/dkubb/equalizer/actions/workflows/mutant.yml/badge.svg)](https://github.com/dkubb/equalizer/actions/workflows/mutant.yml)\n\nEqualizer provides equality, equivalence, hashing, pattern matching, and\ninspection methods for Ruby objects based on explicitly specified attributes.\n\nUnlike approaches that automatically use all `attr_reader` attributes,\nEqualizer requires explicit specification of which attributes affect equality,\ngiving you full control over comparison behavior.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem \"equalizer\"\n```\n\nOr install it directly:\n\n```bash\ngem install equalizer\n```\n\n## Quick Start\n\n```ruby\nclass Point\n  include Equalizer.new(:x, :y)\n\n  attr_reader :x, :y\n\n  def initialize(x, y)\n    @x = x\n    @y = y\n  end\nend\n\np1 = Point.new(1, 2)\np2 = Point.new(1, 2)\n\np1 == p2           # =\u003e true\np1.eql?(p2)        # =\u003e true\np1.hash == p2.hash # =\u003e true\n```\n\n## Features\n\n### Selective Attribute Comparison\n\nOnly the attributes you specify are used for equality. Other instance variables\nare ignored:\n\n\u003e [!TIP]\n\u003e This is useful when you have attributes that shouldn't affect equality, like\n\u003e timestamps, cached values, or display names.\n\n```ruby\nclass GeoLocation\n  include Equalizer.new(:latitude, :longitude)\n\n  attr_reader :latitude, :longitude, :name\n\n  def initialize(latitude, longitude, name = nil)\n    @latitude = latitude\n    @longitude = longitude\n    @name = name\n  end\nend\n\nhome = GeoLocation.new(37.7786, -122.4407, \"Home\")\nwork = GeoLocation.new(37.7786, -122.4407, \"Work\")\n\nhome == work  # =\u003e true (name is not part of equality)\n```\n\n### Equality vs Equivalence\n\nEqualizer provides two comparison methods with different semantics:\n\n#### `==` (Equality)\n\nReturns `true` if the other object is an instance of the same class **or a\nsubclass**, and all specified attributes are equal using `==`:\n\n```ruby\nclass ColoredPoint \u003c Point\n  attr_reader :color\n\n  def initialize(x, y, color)\n    super(x, y)\n    @color = color\n  end\nend\n\npoint = Point.new(1, 2)\ncolored = ColoredPoint.new(1, 2, \"red\")\n\npoint == colored   # =\u003e true (ColoredPoint is a subclass of Point)\ncolored == point   # =\u003e false (Point is not a subclass of ColoredPoint)\n```\n\n\u003e [!IMPORTANT]\n\u003e In Ruby, the `==` operator is asymmetric when comparing across class\n\u003e hierarchies. A parent class instance can equal a subclass instance, but not\n\u003e vice versa.\n\n#### `eql?` (Equivalence)\n\nReturns `true` only if both objects are instances of the **exact same class**,\nand all specified attributes are equal using `eql?`:\n\n```ruby\npoint = Point.new(1, 2)\ncolored = ColoredPoint.new(1, 2, \"red\")\n\npoint.eql?(colored)   # =\u003e false (different classes)\ncolored.eql?(point)   # =\u003e false (different classes)\n\npoint.eql?(Point.new(1, 2))  # =\u003e true (same class, same values)\n```\n\n### Hashing\n\nObjects that are `eql?` will have the same hash code, making them safe for use\nas Hash keys and in Sets:\n\n\u003e [!NOTE]\n\u003e Ruby's `Hash` and `Set` use `eql?` and `hash` together. Equalizer ensures\n\u003e these methods stay consistent—objects that are `eql?` always have matching\n\u003e hash codes.\n\n```ruby\nrequire \"set\"\n\np1 = Point.new(1, 2)\np2 = Point.new(1, 2)\n\n# As Hash keys\nlocations = {}\nlocations[p1] = \"first\"\nlocations[p2] = \"second\"\nlocations.size  # =\u003e 1 (p1 and p2 are the same key)\n\n# In Sets\nset = Set.new\nset \u003c\u003c p1\nset \u003c\u003c p2\nset.size  # =\u003e 1\n```\n\n### Pattern Matching\n\nEqualizer provides full support for Ruby's pattern matching syntax.\n\n\u003e [!TIP]\n\u003e Use array patterns `[x, y]` for positional matching when attribute order\n\u003e matters. Use hash patterns `{x:, y:}` for named matching when you want\n\u003e clarity or only need specific attributes.\n\n#### Array Patterns\n\nUse `deconstruct` for array-style pattern matching:\n\n```ruby\npoint = Point.new(3, 4)\n\ncase point\nin [0, 0]\n  puts \"origin\"\nin [x, 0]\n  puts \"on x-axis at #{x}\"\nin [0, y]\n  puts \"on y-axis at #{y}\"\nin [x, y]\n  puts \"at (#{x}, #{y})\"\nend\n# =\u003e \"at (3, 4)\"\n```\n\n#### Hash Patterns\n\nUse `deconstruct_keys` for hash-style pattern matching:\n\n```ruby\npoint = Point.new(3, 4)\n\ncase point\nin { x: 0, y: 0 }\n  puts \"origin\"\nin { x:, y: } if x == y\n  puts \"on diagonal at #{x}\"\nin { x:, y: }\n  puts \"at (#{x}, #{y})\"\nend\n# =\u003e \"at (3, 4)\"\n```\n\n#### Class Patterns\n\nCombine with class checks:\n\n```ruby\ncase point\nin Point(x: 0, y: 0)\n  puts \"origin point\"\nin Point(x:, y:)\n  puts \"point at (#{x}, #{y})\"\nend\n```\n\n### Clean Inspect Output\n\nEqualizer customizes `inspect` to show only the attributes used for equality:\n\n```ruby\nclass User\n  include Equalizer.new(:id)\n\n  attr_reader :id, :name, :email, :created_at\n\n  def initialize(id, name, email)\n    @id = id\n    @name = name\n    @email = email\n    @created_at = Time.now\n  end\nend\n\nuser = User.new(42, \"Alice\", \"alice@example.com\")\nuser.inspect\n# =\u003e \"#\u003cUser:0x00007f... @id=42\u003e\"\n# Note: name, email, and created_at are not shown\n```\n\n\u003e [!NOTE]\n\u003e When debugging, remember that `inspect` only shows equality attributes. Use\n\u003e `instance_variables` to see all instance variables if needed.\n\nTo keep the original `inspect` and `pretty_print` methods, pass `inspect: false`:\n\n```ruby\nclass Person \u003c Struct.new(:id, :name)\n  include Equalizer.new(:id, inspect: false)\nend\n\namy = Person.new(1, \"Amy\")\namy.inspect\n# =\u003e \"#\u003cstruct Person id=1, name=\\\"Amy\\\"\u003e\"\n```\n\n### Clean Ancestor Chain\n\nThe included module has a descriptive name in the ancestor chain:\n\n```ruby\nPoint.ancestors\n# =\u003e [Point, Equalizer(x, y), Object, Kernel, BasicObject]\n```\n\n## Nested Equalizer Objects\n\nEqualizer objects can be nested and will compare correctly:\n\n```ruby\nclass Line\n  include Equalizer.new(:start_point, :end_point)\n\n  attr_reader :start_point, :end_point\n\n  def initialize(start_point, end_point)\n    @start_point = start_point\n    @end_point = end_point\n  end\nend\n\nline1 = Line.new(Point.new(0, 0), Point.new(1, 1))\nline2 = Line.new(Point.new(0, 0), Point.new(1, 1))\n\nline1 == line2  # =\u003e true\n```\n\n## Error Handling\n\n\u003e [!CAUTION]\n\u003e Equalizer validates arguments at include time. Errors will be raised\n\u003e immediately if you pass invalid arguments.\n\nEqualizer validates its arguments:\n\n```ruby\n# At least one attribute is required\nEqualizer.new()\n# =\u003e ArgumentError: at least one attribute is required\n\n# Attributes must be Symbols\nEqualizer.new(\"name\")\n# =\u003e ArgumentError: attribute must be a Symbol, got String\n```\n\n## Supported Ruby Versions\n\nThis library aims to support and is [tested against][test] the following Ruby\nimplementations:\n\n* Ruby 3.3\n* Ruby 3.4\n* Ruby 4.0\n\nIf something doesn't work on one of these versions, it's a bug.\n\nThis library may inadvertently work (or seem to work) on other Ruby versions or\nimplementations, however support will only be provided for the implementations\nlisted above.\n\nIf you would like this library to support another Ruby version or\nimplementation, you may volunteer to be a maintainer. Being a maintainer\nentails making sure all tests run and pass on that implementation. When\nsomething breaks on your implementation, you will be responsible for providing\npatches in a timely fashion. If critical issues for a particular implementation\nexist at the time of a major release, support for that Ruby version may be\ndropped.\n\n[test]: https://github.com/dkubb/equalizer/actions/workflows/test.yml\n\n## Credits\n\n* Dan Kubb ([dkubb](https://github.com/dkubb))\n* Markus Schirp ([mbj](https://github.com/mbj))\n* Piotr Solnica ([solnic](https://github.com/solnic))\n* Erik Berlin ([sferik](https://github.com/sferik))\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](LICENSE).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["dry-rb","rack","activejob","activerecord","mvc","rubocop","rubygems","rspec","crash-reporting","ruby-syntax"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/81","html_url":"https://ruby.ecosyste.ms/projects/81"}