{"id":61,"name":null,"description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","url":"https://github.com/ipaddress-gem/ipaddress","last_synced_at":"2026-04-30T16:30:29.738Z","repository":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":381,"open_issues_count":36,"forks_count":96,"subscribers_count":18,"default_branch":"master","last_synced_at":"2026-04-22T00:16:16.168Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2026-02-20T11:19:57.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32297899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"packages":[{"id":6059221,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":4,"first_release_published_at":"2022-11-18T22:30:18.000Z","latest_release_published_at":"2025-04-22T21:19:27.000Z","latest_release_number":"0.8.3-r3","last_synced_at":"2026-04-03T04:29:37.368Z","created_at":"2023-01-31T19:02:36.981Z","updated_at":"2026-04-03T04:29:37.368Z","registry_url":"https://pkgs.alpinelinux.org/package/edge/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:36.267Z","dependent_packages_count":2,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":6.030839073262366,"stargazers_count":14.171102066374452,"forks_count":12.543049467752034,"average":8.186247651847212},"purl":"pkg:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=edge","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1805,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2023-02-01T00:05:41.897Z","updated_at":"2023-02-01T00:05:41.897Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-edge","url":"https://pkgs.alpinelinux.org/packages?branch=edge","ecosystem":"alpine","default":false,"packages_count":39208,"maintainers_count":876,"namespaces_count":3,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community","testing"],"funded_packages_count":2709},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.616Z","updated_at":"2026-04-03T06:22:46.281Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-edge/namespaces"}},{"id":7781281,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-22T20:50:54.000Z","latest_release_published_at":"2023-04-22T20:50:54.000Z","latest_release_number":"0.8.3-r1","last_synced_at":"2026-04-03T04:40:28.667Z","created_at":"2023-05-22T14:49:10.859Z","updated_at":"2026-04-03T04:40:28.668Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.18/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:50.390Z","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":13.226273003840209,"forks_count":11.784948381626851,"docker_downloads_count":null,"average":6.252805346366765},"purl":"pkg:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.18","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1182,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2023-05-23T08:20:34.122Z","updated_at":"2023-05-23T08:20:34.122Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.18","url":"https://pkgs.alpinelinux.org/packages?branch=v3.18","ecosystem":"alpine","default":false,"packages_count":20068,"maintainers_count":367,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1182},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-05-22T10:43:30.622Z","updated_at":"2026-04-01T06:59:05.280Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.18/namespaces"}},{"id":10347092,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-12-27T16:04:18.000Z","latest_release_published_at":"2023-12-27T16:04:18.000Z","latest_release_number":"0.8.3-r2","last_synced_at":"2026-04-03T04:39:30.943Z","created_at":"2024-06-11T11:21:52.435Z","updated_at":"2026-04-03T04:39:30.943Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.20/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:50.621Z","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:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.20","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1318,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2024-06-12T02:06:08.781Z","updated_at":"2024-06-12T02:06:08.781Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.20","url":"https://pkgs.alpinelinux.org/packages?branch=v3.20","ecosystem":"alpine","default":false,"packages_count":24162,"maintainers_count":405,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1474},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-06-07T11:51:39.915Z","updated_at":"2026-04-03T06:46:59.488Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.20/namespaces"}},{"id":11768357,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2025-04-22T21:19:27.000Z","latest_release_published_at":"2025-04-22T21:19:27.000Z","latest_release_number":"0.8.3-r3","last_synced_at":"2026-04-03T04:39:06.921Z","created_at":"2025-06-07T19:33:49.424Z","updated_at":"2026-04-03T04:39:06.921Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.22/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:20.534Z","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:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.22","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1430,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2025-06-08T18:07:59.333Z","updated_at":"2025-06-08T18:07:59.333Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.22","url":"https://pkgs.alpinelinux.org/packages?branch=v3.22","ecosystem":"alpine","default":false,"packages_count":26322,"maintainers_count":422,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1727},"icon_url":"https://github.com/alpinelinux.png","created_at":"2025-06-05T10:49:56.987Z","updated_at":"2026-04-03T06:45:45.642Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.22/namespaces"}},{"id":11141678,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-12-27T16:04:18.000Z","latest_release_published_at":"2023-12-27T16:04:18.000Z","latest_release_number":"0.8.3-r2","last_synced_at":"2026-04-03T04:38:53.012Z","created_at":"2024-12-07T13:52:44.290Z","updated_at":"2026-04-03T04:38:53.013Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.21/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:50.443Z","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:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.21","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1371,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2024-12-13T16:58:39.779Z","updated_at":"2024-12-13T16:58:39.779Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.21","url":"https://pkgs.alpinelinux.org/packages?branch=v3.21","ecosystem":"alpine","default":false,"packages_count":25393,"maintainers_count":413,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1264},"icon_url":"https://github.com/alpinelinux.png","created_at":"2024-12-06T12:06:36.014Z","updated_at":"2026-04-03T06:45:30.589Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.21/namespaces"}},{"id":13011903,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2025-04-22T21:19:27.000Z","latest_release_published_at":"2025-04-22T21:19:27.000Z","latest_release_number":"0.8.3-r3","last_synced_at":"2026-04-13T13:05:33.124Z","created_at":"2026-01-31T01:52:57.788Z","updated_at":"2026-04-13T13:05:33.124Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.23/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"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:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.23","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1474,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2026-03-04T04:57:56.946Z","updated_at":"2026-03-04T04:57:56.946Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.23","url":"https://pkgs.alpinelinux.org/packages?branch=v3.23","ecosystem":"alpine","default":false,"packages_count":27569,"maintainers_count":427,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":78},"icon_url":"https://github.com/alpinelinux.png","created_at":"2026-01-24T14:35:50.739Z","updated_at":"2026-04-03T06:23:41.999Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.23/namespaces"}},{"id":8679450,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2023-04-22T20:50:54.000Z","latest_release_published_at":"2023-04-22T20:50:54.000Z","latest_release_number":"0.8.3-r1","last_synced_at":"2026-04-03T04:39:24.842Z","created_at":"2023-12-20T10:33:29.642Z","updated_at":"2026-04-03T04:39:24.842Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.19/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:50.904Z","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:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.19","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1283,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2024-10-30T16:14:05.495Z","updated_at":"2024-10-30T16:14:05.495Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.19","url":"https://pkgs.alpinelinux.org/packages?branch=v3.19","ecosystem":"alpine","default":false,"packages_count":23031,"maintainers_count":392,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":822},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-12-20T09:51:56.346Z","updated_at":"2026-04-03T06:46:48.377Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.19/namespaces"}},{"id":6111434,"name":"ruby-ipaddress","ecosystem":"alpine","description":"Ruby library to handle IP addresses in a modern and productive way","homepage":"https://github.com/ipaddress-gem/ipaddress","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ipaddress-gem/ipaddress","keywords_array":[],"namespace":"community","versions_count":1,"first_release_published_at":"2022-11-18T22:30:18.000Z","latest_release_published_at":"2022-11-18T22:30:18.000Z","latest_release_number":"0.8.3-r0","last_synced_at":"2026-04-03T04:40:38.103Z","created_at":"2023-01-31T21:18:48.525Z","updated_at":"2026-04-03T04:40:38.104Z","registry_url":"https://pkgs.alpinelinux.org/package/v3.17/community/x86_64/ruby-ipaddress","install_command":"apk add ruby-ipaddress","documentation_url":null,"metadata":{"repository":"community","architecture":"x86_64"},"repo_metadata":{"id":42569170,"uuid":"410491","full_name":"ipaddress-gem/ipaddress","owner":"ipaddress-gem","description":"A library to handle IPv4 and IPv6 addresses in a modern and productive way.","archived":false,"fork":false,"pushed_at":"2024-11-03T16:05:32.000Z","size":418,"stargazers_count":380,"open_issues_count":36,"forks_count":97,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-06T03:01:52.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/ipaddress/","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/ipaddress-gem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2009-12-09T11:42:55.000Z","updated_at":"2025-10-31T12:37:49.000Z","dependencies_parsed_at":"2025-04-20T06:30:19.452Z","dependency_job_id":null,"html_url":"https://github.com/ipaddress-gem/ipaddress","commit_stats":{"total_commits":207,"total_committers":34,"mean_commits":6.088235294117647,"dds":0.5072463768115942,"last_synced_commit":"fb310dff8889c39f1caa457ccf354ec34fdb2d68"},"previous_names":["bluemonk/ipaddress"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ipaddress-gem/ipaddress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/sbom","scorecard":{"id":244826,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipaddress-gem/ipaddress","commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:22:45.711Z","repository_id":42569170,"created_at":"2025-08-17T07:22:45.711Z","updated_at":"2025-08-17T07:22:45.711Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283278914,"owners_count":26809723,"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-11-07T02:00:06.343Z","response_time":61,"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":"ipaddress-gem","name":"ipaddress-gem","uuid":"17785368","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17785368?v=4","repositories_count":1,"last_synced_at":"2023-03-11T14:10:48.074Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ipaddress-gem","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T03:26:40.932Z","updated_at":"2023-03-11T14:10:48.098Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipaddress-gem/repositories"},"tags":[{"name":"v0.8.3","sha":"064502c6a943f983cabea38fccdb528ad9469aec","kind":"tag","published_at":"2016-02-17T13:51:53.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.3","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.3/manifests"},{"name":"v0.8.0","sha":"0ddaebf373d263f9f42e9ce51890a48025e5fc7f","kind":"commit","published_at":"2011-05-17T06:33:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.8.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.8.0/manifests"},{"name":"v0.7.5","sha":"d523b305bfe1af7f61e408ef9404a928e9b846c3","kind":"commit","published_at":"2011-04-08T07:42:09.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.5","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.5/manifests"},{"name":"v0.7.0","sha":"c5de5d688dc523b9fb0e0d1bceff26e1678d99b5","kind":"commit","published_at":"2010-09-08T11:42:45.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.7.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"b049912c2ac43e5b017910e546146d8770fab6f7","kind":"commit","published_at":"2010-07-19T12:23:11.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.6.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"7b7a94ac7dfe9fd6eef5a14a9b8f91bfa947e294","kind":"commit","published_at":"2010-05-22T16:57:00.000Z","download_url":"https://codeload.github.com/ipaddress-gem/ipaddress/tar.gz/v0.5.0","html_url":"https://github.com/ipaddress-gem/ipaddress/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ipaddress-gem/ipaddress@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/tags/v0.5.0/manifests"}]},"repo_metadata_updated_at":"2025-11-14T07:08:50.437Z","dependent_packages_count":3,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":18.95138654990457,"stargazers_count":12.041091276524082,"forks_count":11.019422925788705,"average":10.50297518805434},"purl":"pkg:apk/alpine/ruby-ipaddress?arch=x86_64\u0026repository_url=https://pkgs.alpinelinux.org/packages?branch=v3.17","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/alpine/ruby-ipaddress","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/alpine/ruby-ipaddress","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/alpine/ruby-ipaddress/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T15:43:35.105Z","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/ruby-ipaddress/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/ruby-ipaddress/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/ruby-ipaddress/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/ruby-ipaddress/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages/ruby-ipaddress/codemeta","maintainers":[{"uuid":"jakub@jirutka.cz","login":null,"name":"Jakub Jirutka","email":null,"url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","packages_count":1129,"html_url":"https://pkgs.alpinelinux.org/packages?maintainer=Jakub Jirutka","role":null,"created_at":"2023-02-01T09:04:36.690Z","updated_at":"2023-02-01T09:04:36.690Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/maintainers/jakub@jirutka.cz/packages"}],"registry":{"name":"alpine-v3.17","url":"https://pkgs.alpinelinux.org/packages?branch=v3.17","ecosystem":"alpine","default":false,"packages_count":17817,"maintainers_count":352,"namespaces_count":2,"keywords_count":0,"github":"alpinelinux","metadata":{"repos":["main","community"],"funded_packages_count":1034},"icon_url":"https://github.com/alpinelinux.png","created_at":"2023-01-31T17:27:50.642Z","updated_at":"2026-03-05T07:54:00.528Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/alpine-v3.17/namespaces"}}],"commits":{"id":19234,"full_name":"ipaddress-gem/ipaddress","default_branch":"master","total_commits":211,"total_committers":34,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.205882352941177,"dds":0.5165876777251185,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-12T08:02:20.833Z","last_synced_commit":"50a3d73bb1dbeec24a8dd957e3bb7cf7dd207960","created_at":"2023-03-07T11:40:28.156Z","updated_at":"2026-04-12T08:02:14.135Z","committers":[{"name":"bluemonk","email":"ceresa@gmail.com","login":"bluemonk","count":102},{"name":"Mike Mackintosh","email":"m@zyp.io","login":"mikemackintosh","count":23},{"name":"Francis Luong (Franco)","email":"fluong@fx-mbp-13.local","login":null,"count":21},{"name":"Alexander Sandström","email":"mail+github@a16m.se","login":"sandstrom","count":8},{"name":"Michael Miller","email":"icy.arctic.fox@gmail.com","login":"icy-arctic-fox","count":7},{"name":"Michael Rodrigues","email":"mikebrodrigues@gmail.com","login":"mikerodrigues","count":7},{"name":"Romain Tartière","email":"romain@blogreen.org","login":"smortex","count":6},{"name":"eahlstrom","email":"erik@negahok.se","login":"eahlstrom","count":4},{"name":"Bronislav Robenek","email":"b.robenek@sh.cvut.cz","login":"brona","count":3},{"name":"Kenichi Kamiya","email":"kachick1@gmail.com","login":"kachick","count":3},{"name":"Bruno Rohée","email":"bruno@rohee.com","login":"brohee","count":2},{"name":"Daniele Alessandri","email":"suppakilla@gmail.com","login":"nrk","count":2},{"name":"Johnny Willemsen","email":"jwillemsen@remedy.nl","login":"jwillemsen","count":2},{"name":"vanderhoorn","email":"vanderhoorn","login":"vanderhoorn","count":1},{"name":"Juho Mäkinen","email":"juho.makinen@applifier.com","login":null,"count":1},{"name":"Julian C. Dunn","email":"jdunn@getchef.com","login":null,"count":1},{"name":"Julien Ammous","email":"j.ammous@gmail.com","login":null,"count":1},{"name":"bluemonk","email":"ceresa@ieee.org","login":null,"count":1},{"name":"kaustubh-d","email":"kaustubh@clogeny.com","login":null,"count":1},{"name":"krpk1900","email":"krpk1900@gmail.com","login":"krpk1900","count":1},{"name":"kaoudis","email":"moshimoshi@kellykaoud.is","login":"kaoudis","count":1},{"name":"Wojciech Piekutowski","email":"wojciech@piekutowski.net","login":"wpiekutowski","count":1},{"name":"Steven Schmid","email":"stevschmid@gmail.com","login":"stevschmid","count":1},{"name":"Simone Carletti","email":"weppos@weppos.net","login":"weppos","count":1},{"name":"Shannon Skipper","email":"shannonskipper@gmail.com","login":"havenwood","count":1},{"name":"Pedro don't want to be here","email":"39959198+pedro-nonfree","login":"pedro-nonfree","count":1},{"name":"Paulius Dambravičius","email":"dambravicius@gmail.com","login":"paudam","count":1},{"name":"Nicolas Leger","email":"nicolasleger","login":"nicolasleger","count":1},{"name":"Koichi ITO","email":"koic.ito@gmail.com","login":"koic","count":1},{"name":"Gregory Graf","email":"graf.gregory@gmail.com","login":"ghg","count":1},{"name":"Gauthier Delacroix","email":"gauthier.delacroix@gmail.com","login":"gdlx","count":1},{"name":"Alan Somers","email":"asomers@gmail.com","login":"asomers","count":1},{"name":"Chris Marshall","email":"chris@chrismar035.com","login":"codegoalie","count":1},{"name":"Francis Luong (Franco)","email":"franco@definefunk.com","login":"francisluong","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-14T00:00:07.982Z","repositories_count":6213247,"commits_count":903339003,"contributors_count":34926861,"owners_count":1144256,"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":"ipaddress-gem/ipaddress","html_url":"https://github.com/ipaddress-gem/ipaddress","last_synced_at":"2026-01-24T18:00:41.170Z","status":"error","issues_count":44,"pull_requests_count":78,"avg_time_to_close_issue":147466489.27586207,"avg_time_to_close_pull_request":42237339.716981135,"issues_closed_count":29,"pull_requests_closed_count":53,"pull_request_authors_count":42,"issue_authors_count":37,"avg_comments_per_issue":2.6136363636363638,"avg_comments_per_pull_request":2.0128205128205128,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":54.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-10T19:03:07.346Z","updated_at":"2026-01-24T18:00:41.170Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipaddress-gem%2Fipaddress/issues","issue_labels_count":{"Enhancement":4},"pull_request_labels_count":{"Needs Project Owner":6,"0 - PR Acknowledged":3,"Cleanup":2,"1 - QA in Progress":1,"2 - Submitter Action Required":1},"issue_author_associations_count":{"NONE":36,"CONTRIBUTOR":6,"COLLABORATOR":2},"pull_request_author_associations_count":{"NONE":36,"CONTRIBUTOR":33,"COLLABORATOR":9},"issue_authors":{"francisluong":4,"sandstrom":2,"quile90958":2,"ghost":2,"fawaf":2,"msimkins":1,"jjmanzer":1,"PJO2":1,"bcoles":1,"jim-hanlon":1,"leechunhoe":1,"wpiekutowski":1,"oliverrauscher":1,"GitNikko":1,"jcourteau":1,"gucki":1,"malongshuai":1,"murdoch":1,"nik736":1,"yxhuvud":1,"realloc":1,"spovich":1,"garo":1,"RubyTuesdayDONO":1,"asomers":1,"vizvamitra":1,"andrepcg":1,"dstull":1,"kenn":1,"ioprev":1,"cayblood":1,"virgiledelplace":1,"jcoetzee":1,"RedaBenh":1,"traxanos":1,"mcr":1,"tetherit":1},"pull_request_authors":{"javierav":8,"francisluong":5,"sandstrom":5,"skorobogatydmitry":4,"mandelbro":4,"asomers":4,"smortex":3,"gogainda":3,"Adam21e":3,"jwillemsen":2,"mcr":2,"gdlx":2,"ghg":2,"brohee":2,"icy-arctic-fox":2,"krpk1900":1,"garo":1,"knu":1,"kachick":1,"mikerodrigues":1,"patdowney":1,"mikemackintosh":1,"lumean":1,"hannesg":1,"fr3nch13":1,"kaoudis":1,"raorn":1,"entei":1,"SJCaldwell":1,"mabels":1,"jcoetzee":1,"victorhahncastell":1,"nicolasleger":1,"thesp0nge":1,"paudam":1,"ioprev":1,"vanderhoorn":1,"t3hk0d3":1,"havenwood":1,"wpiekutowski":1,"pedro-nonfree":1,"koic":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14179840,"issues_count":34597532,"pull_requests_count":113160408,"authors_count":11231512,"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":{"NONE":3},"past_year_issue_authors":{},"past_year_pull_request_authors":{"mcr":2,"fr3nch13":1},"maintainers":[{"login":"sandstrom","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sandstrom"},{"login":"Adam21e","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Adam21e"},{"login":"mikemackintosh","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mikemackintosh"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":1,"PullRequestEvent":6,"ForkEvent":3,"IssuesEvent":2,"IssueCommentEvent":11,"PushEvent":1,"CreateEvent":1},"last_year":{"PullRequestEvent":3,"ForkEvent":1,"IssueCommentEvent":8}},"keywords":[],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-08-20T11:21:46.582Z","updated_at":"2022-08-20T11:21:46.582Z","repository_link":"https://github.com/ipaddress-gem/ipaddress/blob/master/Gemfile","dependencies":[{"id":2160913066,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 1.0","direct":true,"kind":"development","optional":false},{"id":2160913067,"package_name":"rake","ecosystem":"rubygems","requirements":"= 10.5.0","direct":true,"kind":"development","optional":false},{"id":2160913068,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.8, \u003e= 5.8.4","direct":true,"kind":"development","optional":false},{"id":2160913069,"package_name":"pry","ecosystem":"rubygems","requirements":"\u003e= 0.10.1","direct":true,"kind":"development","optional":false},{"id":2160913070,"package_name":"travis","ecosystem":"rubygems","requirements":"\u003e= 1.8.2","direct":true,"kind":"development","optional":false},{"id":2160913071,"package_name":"jeweler","ecosystem":"rubygems","requirements":"\u003e= 2.0.1","direct":true,"kind":"development","optional":false},{"id":2160913072,"package_name":"codeclimate-test-reporter","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2160913073,"package_name":"simplecov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"ipaddress.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-20T11:21:46.685Z","updated_at":"2022-08-20T11:21:46.685Z","repository_link":"https://github.com/ipaddress-gem/ipaddress/blob/master/ipaddress.gemspec","dependencies":[{"id":2160913168,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 1.0","direct":true,"kind":"development","optional":false},{"id":2160913169,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2160913170,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.8, \u003e= 5.8.4","direct":true,"kind":"development","optional":false},{"id":2160913171,"package_name":"pry","ecosystem":"rubygems","requirements":"\u003e= 0.10.1","direct":true,"kind":"development","optional":false},{"id":2160913172,"package_name":"travis","ecosystem":"rubygems","requirements":"\u003e= 1.8.2","direct":true,"kind":"development","optional":false},{"id":2160913173,"package_name":"jeweler","ecosystem":"rubygems","requirements":"\u003e= 2.0.1","direct":true,"kind":"development","optional":false},{"id":2160913174,"package_name":"codeclimate-test-reporter","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2160913175,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 1.0","direct":true,"kind":"runtime","optional":false},{"id":2160913176,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2160913177,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.8, \u003e= 5.8.4","direct":true,"kind":"runtime","optional":false},{"id":2160913178,"package_name":"pry","ecosystem":"rubygems","requirements":"\u003e= 0.10.1","direct":true,"kind":"runtime","optional":false},{"id":2160913179,"package_name":"travis","ecosystem":"rubygems","requirements":"\u003e= 1.8.2","direct":true,"kind":"runtime","optional":false},{"id":2160913180,"package_name":"jeweler","ecosystem":"rubygems","requirements":"\u003e= 2.0.1","direct":true,"kind":"runtime","optional":false},{"id":2160913181,"package_name":"codeclimate-test-reporter","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]}],"score":11.351206215643018,"created_at":"2024-12-15T21:38:06.887Z","updated_at":"2026-04-30T16:30:29.739Z","avatar_url":"https://github.com/ipaddress-gem.png","language":"Ruby","monthly_downloads":0,"readme":"# IPAddress\n\nIPAddress is a Ruby library designed to make the use of IPv4 and IPv6\naddresses simple, powerful and enjoyable. It provides a complete set of\nmethods to handle IP addresses for any need, from simple scripting to full\nnetwork design.\n\nThis document provides a brief introduction to the library and examples of\ntypical usage.\n\n## Requirements\n\n* Ruby 1.9.3 or later\n\nPlease refer to [Travis CI](https://travis-ci.org/ipaddress-gem/ipaddress) for\nBuild Tests on specific versions of Ruby.\n\n[\u003cimg src=\"https://travis-ci.org/ipaddress-gem/ipaddress.svg?branch=master\"\nalt=\"Build Status\" /\u003e](https://travis-ci.org/ipaddress-gem/ipaddress) [\u003cimg\nsrc=\"https://codeclimate.com/github/ipaddress-gem/ipaddress/badges/gpa.svg\"\n/\u003e](https://codeclimate.com/github/ipaddress-gem/ipaddress) [\u003cimg\nsrc=\"https://www.versioneye.com/user/projects/57001305fcd19a0051853bde/badge.s\nvg?style=flat\" alt=\"Dependency Status\"\n/\u003e](https://www.versioneye.com/user/projects/57001305fcd19a0051853bde)\n\nIPAddress 0.8.2 was manually tested on:\n\n*   ruby-1.8.7-p334 [ i386 ]\n*   ree-1.8.7-2011.03 [ i386 ]\n*   rbx-head [ ]\n*   jruby-1.6.1 [ linux-i386-java ]\n*   ruby-1.9.1-p431 [ i386 ]\n*   ruby-1.9.2-p180 [ i386 ]\n*   ruby-2.0.0-p353 [ x86_64-darwin14.0.0 ]\n*   ruby-2.1.3-p242 [ x86_64-darwin14.0.0 ]\n\n\nIf you want to contribute, please refer to\n[Contributing.md](https://github.com/ipaddress-gem/ipaddress/blob/master/CONTR\nIBUTING.md).\n\n## Installation\n\nThis gem is installed like any other:\n\n```bash\n# Install it generally:\n$ gem install ipaddress\n\n# or, add it to your current application gemfile:\n$ bundle add ipaddress\n```\n\n## Documentation\n\nThe code is fully documented with RDoc. You can generate the\ndocumentation with Rake:\n\n```bash\n$ rake rdoc\n```\n\nThe latest documentation can be found online at\n[this address][https://rubydoc.info/gems/ipaddress/]\n\n## Introduction via examples\n\nBelow are two sections with examples. The first section is for IPv4,\nthe second for IPv6 (further down).\n\n## IPv4\n\nThe class `IPAddress::IPv4` is used to handle IPv4 type addresses.\n\n### Create a new IPv4 address\n\nThe usual way to express an IP Address is using its dotted decimal form, such\nas `172.16.10.1`, and a prefix, such as `24`, separated by a slash.\n\n```\n172.16.10.1/24\n```\n\nTo create a new IPv4 object, you can use IPv4 own class\n\n```ruby\nip = IPAddress::IPv4.new \"172.16.10.1/24\"\n```\n\nor, in a easier way, using the IPAddress parse method\n\n```ruby\nip = IPAddress.parse \"172.16.10.1/24\"\n```\n\nwhich accepts and parses any kind of IP (uint32, IPv4, IPV6 and IPv4 IPv6\nmapped addresses).\n\nIf you like syntactic sugar, you can use the wrapper method `IPAddress()`,\nwhich is built around `IPAddress::parse`:\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n```\n\nYou can specify an IPv4 address in any of two ways:\n\n```ruby\nIPAddress \"172.16.10.1/24\"\nIPAddress \"172.16.10.1/255.255.255.0\"\n```\n\nIn this example, prefix `/24` and netmask `255.255.255.0` are the same and you\nhave the flexibility to use either one of them.\n\nIf you don't explicitly specify the prefix (or the subnet mask), IPAddress\nthinks you're dealing with host addresses and not with  networks. Therefore,\nthe default prefix will be `/32`, or `255.255.255.255`. For example:\n\n```ruby\n# let's declare an host address\nhost = IPAddress::IPv4.new \"10.1.1.1\"\n\nputs host.to_s #=\u003e \"10.1.1.1/32\"\n```\n\nThe new created object has prefix `/32`, which is the same  as we created the\nfollowing:\n\n```ruby\nhost = IPAddress::IPv4.new \"10.1.1.1/32\"\n```\n\nYou can also pass a `uint32` to obtain an `IPAddress::IPv4` object:\n\n```ruby\n# Create host object\nip = IPAddress 167837953\nputs ip.to_s #=\u003e \"10.1.1.1/32\"\n```\n\n### Handling the IPv4 address\n\nOnce created, you can obtain the attributes for an IPv4 object:\n\n```ruby\nip = IPAddress(\"172.16.10.1/24\")\n\nip.address #=\u003e \"172.16.10.1\"\nip.prefix #=\u003e 24\n```\n\nIn case you need to retrieve the netmask in IPv4 format, you can use the\n`IPv4#netmask` method:\n\n```ruby\nip.netmask #=\u003e \"255.255.255.0\"\n```\n\nA special attribute, `IPv4#octets`, is available to get the four  decimal\noctets from the IP address:\n\n```ruby\nip.octets #=\u003e [172,16,10,1]\n```\n\nThe shortcut method `IPv4#[]`, provides access to a given octet whithin the range:\n\n```ruby\nip[1] #=\u003e 16\n```\n\nIf you need to print out the IPv4 address in a canonical form, you can use\n`IPv4#to_s`:\n\n```ruby\nip.to_s #=\u003e \"172.16.10.1/24\"\n```\n\n### Changing netmask\n\nYou can set a new prefix (netmask) after creating an IPv4  object. For\nexample:\n\n```ruby\nip.prefix = 25\n\nip.to_s #=\u003e \"172.16.10.1/25\"\n```\n\nIf you need to use a netmask in IPv4 format, you can achive so by using the\n`IPv4#netmask=` method:\n\n```ruby\nip.netmask = \"255.255.255.252\"\n\nip.to_s #=\u003e \"172.16.10.1/30\"\n```\n\n### Working with networks, broadcasts and addresses\n\nSome important topics in dealing with IP addresses are the concepts of\n`network` and `broadcast`, as well as the addresses included in a range.\n\nWhen you specify an IPv4 address such as `172.16.10.1/24`, you are actually\nhandling two different information:\n\n*   The IP address itself, \"172.16.10.1\"\n*   The subnet mask which indicates the network\n\nThe network number is the IP which has all zeroes in the host portion. In our\nexample, because the prefix is 24, we identify our network number to have the\nlast 8 (32-24) bits all zeroes.  Thus, IP address `172.16.10.1/24` belongs to\nnetwork `172.16.10.0/24`.\n\nThis is important because, for instance, IP `172.16.10.1/16` is\ndifferent to the previous one, belonging to the different network\n`172.16.0.0/16`.\n\n#### Networks\n\nWith IPAddress it's easy to calculate the network for an IP address:\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n\nnet = ip.network #=\u003e #\u003cIPAddress::IPv4:0xb7a5ab24 @octets=[172, 16, 10, 0], @prefix=24, @address=\"172.16.10.0\"\u003e\nnet.to_s #=\u003e \"172.16.10.0/24\"\n```\n\nMethod IPv4#network creates a new IPv4 object from the network number,\ncalculated after the original object. We want to outline here that the network\naddress is a perfect legitimate IPv4 address, which just happen to have all\nzeroes in the host portion.\n\nYou can use method `IPv4#network?` to check whether an IP address is a network\nor not:\n\n```ruby\nip1 = IPAddress \"172.16.10.1/24\"\nip2 = IPAddress \"172.16.10.4/30\"\n\nip1.network? #=\u003e false\nip2.network? #=\u003e true\n```\n\n#### Broadcast\n\nThe broadcast address is the contrary than the network number: where the\nnetwork number has all zeroes in the host portion, the broadcast address has\nall one's. For example, ip `172.16.10.1/24` has broadcast `172.16.10.255/24`,\nwhere ip `172.16.10.1/16` has broadcast `172.16.255.255/16`.\n\nMethod `IPv4#broadcast` has the same behavior as is `#network` counterpart: it\ncreates a new IPv4 object to handle the broadcast address:\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n\nbcast = ip.broadcast #=\u003e #\u003cIPAddress::IPv4:0xb7a406fc @octets=[172, 16, 10, 255], @prefix=24, @address=\"172.16.10.255\"\u003e\nbcast.to_s #=\u003e \"172.16.10.255/24\"\n```\n\n#### Addresses, ranges and iterators\n\nSo we see that the netmask essentially specifies a range for IP addresses that\nare included in a network: all the addresses between the network number and\nthe broadcast. IPAddress has many methods to iterate between those addresses.\nLet's start with `IPv4#each`, which iterates over all addresses in a range\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n\nip.each do |addr|\n  puts addr\nend\n```\n\nIt is important to note that it doesn't matter if the original IP is a host IP\nor a network number (or a broadcast address): the #each method only considers\nthe range that the original IP specifies.\n\nIf you only want to iterate over hosts IP, use the `IPv4#each_host` method:\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n\nip.each_host do |host|\n  puts host\nend\n```\n\nMethods `IPv4#first` and `IPv4#last` return a new object containing\nrespectively the first and the last host address in the range\n\n```ruby\nip = IPAddress \"172.16.10.100/24\"\n\nip.first.to_s #=\u003e \"172.16.10.1/24\"\nip.last.to_s #=\u003e \"172.16.10.254/24\"\n```\n\nChecking if an address is loopback is easy with the `IPv4#loopback?` method:\n\n```ruby\nip = IPAddress \"127.0.0.1\"\n\nip.loopback? #=\u003e true\n```\n\nChecking if an address is in the multicast range can be done using the\n`IPv4#multicast?` method:\n\n```ruby\nip = IPAddress \"224.0.0.1/32\"\n\nip.multicast? #=\u003e true\n```\n\nThe ability to generate a range also exists by using the `IPv4#to()` method.\nThis allows you to create a subnet agnostic range based off a fixed amount.\n\n```ruby\nip = IPAddress \"172.16.10.100/24\"\nip.to('172.16.10.110') #=\u003e [\"172.16.10.100\", ..., \"172.16.10.110\"]\n```\n\n### IP special formats\n\nThe IPAddress library provides a complete set of methods to access an IPv4\naddress in special formats, such as binary, 32 bits unsigned int, data and\nhexadecimal.\n\nLet's take the following IPv4 as an example:\n\n```ruby\nip = IPAddress \"172.16.10.1/24\"\n\nip.address #=\u003e \"172.16.10.1\"\n```\n\nThe first thing to highlight here is that all these conversion methods only\ntake into consideration the address portion of an IPv4 object and not the\nprefix (netmask).\n\nSo, to express the address in binary format, use the `IPv4#bits` method:\n\n```ruby\nip.bits #=\u003e \"10101100000100000000101000000001\"\n```\n\nTo calculate the 32 bits unsigned int format of the ip address, use the\n`IPv4#to_u32` method\n\n```ruby\nip.to_u32 #=\u003e 2886732289\n```\n\nThis method is the equivalent of the Unix call `pton()`, expressing an IP\naddress in the so called +network byte order+ notation. However, if you want\nto transmit your IP over a network socket, you might need to transform it in\ndata format using the `IPv4#data` method:\n\n```ruby\nip.data #=\u003e \"\\254\\020\\n\\001\"\n```\n\nAlso, you can transform an IPv4 address into a format which is suitable to use\nin IPv4-IPv6 mapped addresses:\n\n```ruby\nip.to_ipv6 #=\u003e \"ac10:0a01\"\n```\n\nFinally, much like `IPv4#to_ipv6` you can use to `IPv4#to_h` method to return\na non-semicolon delineated string (useful with pcap/byte level usage):\n\n```ruby\nip.to_h #=\u003e \"ac100a01\"\n```\n\n### Classful networks\n\nIPAddress allows you to create and manipulate objects using the old  and\ndeprecated (but apparently still popular) classful networks concept.\n\nClassful networks and addresses don't have a prefix: their subnet mask is\nunivocally identified by their address, and therefore divided in classes. As\nper RFC 791, these classes are:\n\n* Class A, from 0.0.0.0 to 127.255.255.255\n* Class B, from 128.0.0.0 to 191.255.255.255\n* Class C, from 192.0.0.0 to 255.255.255.255\n\nSince classful networks here are only considered to calculate the default\nprefix number, classes D and E are not considered.\n\nTo create a classful IP and prefix from an IP address, use the\nIPv4::parse_classful method:\n\n```ruby\n# classful ip\nip = IPAddress::IPv4::parse_classful \"10.1.1.1\"\n\nip.prefix #=\u003e 8\n```\n\nThe method automatically created a new IPv4 object and assigned it the correct\nprefix.\n\nYou can easily check which classful network an IPv4 object belongs:\n\n```ruby\nip = IPAddress(\"10.0.0.1/24\")\nip.a? #=\u003e true\n\nip = IPAddress(\"172.16.10.1/24\")\nip.b? #=\u003e true\n\nip = IPAddress(\"192.168.1.1/30\")\nip.c? #=\u003e true\n```\n\nRemember that these methods are only checking the address portion of an IP,\nand are independent from its prefix, as classful networks have no concept of\nprefix.\n\nFor more information on classful networks visit the  [Wikipedia\npage](https://en.wikipedia.org/wiki/Classful_network)\n\n### Network design with IPAddress\n\nIPAddress includes a lot of useful methods to manipulate IPv4 and IPv6\nnetworks and do some basic network design.\n\n#### Subnetting\n\nThe process of subnetting is the division of a network into smaller (in terms\nof hosts capacity) networks, called subnets, so that they all share a common\nroot, which is the starting network.\n\nFor example, if you have network \"172.16.10.0/24\", we can subnet it into 4\nsmaller subnets. The new prefix will be /26, because 4 is 2^2 and therefore we\nadd 2 bits to the network prefix (24+2=26).\n\nSubnetting is easy with IPAddress. You actually have two options:\n\n* IPv4#subnet: specify a new prefix\n* IPv4#split: tell IPAddress how many subnets you want to create.\n\nLet's examine `IPv4#subnet` first. Say you have network \"172.16.10.0/24\" and\nyou want to subnet it into /26 networks.\n\n```ruby\nnetwork = IPAddress \"172.16.10.0/24\"\n\nsubnets = network.subnet(26)\n\nsubnets.map { |i| i.to_s } #=\u003e [\"172.16.10.0/26\", \"172.16.10.64/26\", \"172.16.10.128/26\", \"172.16.10.192/26\"]\n```\n\nAs you can see, an Array has been created, containing 4 new IPv4 objects\nrepresenting the new subnets.\n\nAnother way to create subnets is to tell IPAddress how many subnets you'd\nlike to have, and letting the library calculate the new prefix for you.\n\nLet's see how it works, using `IPv4#split` method. Say you want 4 new subnets:\n\n```ruby\nnetwork = IPAddress(\"172.16.10.0/24\")\n\nsubnets = network.split(4)\n\nsubnets.map { |i| i.to_s } #=\u003e [\"172.16.10.0/26\", \"172.16.10.64/26\", \"172.16.10.128/26\", \"172.16.10.192/26\"]\n```\n\nHey, that's the same result as before! This actually makes sense, as the two\noperations are complementary. When you use `IPv4#subnet` with the new prefix,\nIPAddress will always create a number of subnets that is a power  of two. This\nis equivalent to use IPv4#split with a power of 2.\n\nWhere `IPv4#split` really shines is with the so called \"uneven subnetting\".\nYou are not limited to split a network into a power-of-two numbers of subnets:\nIPAddress lets you create any number of subnets, and it will try to organize\nthe new created network in the best possible way, making an efficient\nallocation of the space.\n\nAn example here is worth a thousand words. Let's use the same network as the\nprevious examples:\n\n```ruby\nnetwork = IPAddress(\"172.16.10.0/24\")\n```\n\nHow do we split this network into 3 subnets? Easy:\n\n```ruby\nsubnets = network.split(3)\n\nsubnets.map { |i| i.to_s } #=\u003e [\"172.16.10.0/26\", \"172.16.10.64/26\", \"172.16.10.128/25\"]\n```\n\nAs you can see, IPAddress tried to perform a good allocation by filling up all\nthe address space from the original network. There is no point in splitting a\nnetwork into 3 subnets like `172.16.10.0/26`, `172.16.10.64/26` and\n`172.16.10.128/26`, as you would end up having `172.16.10.192/26` wasted.\n\nWe can go even further and split into 11 subnets:\n\n```ruby\nnetwork.split(11)\n#=\u003e [\"172.16.10.0/28\", \"172.16.10.16/28\", \"172.16.10.32/28\",\n#    \"172.16.10.48/28\", \"172.16.10.64/28\", \"172.16.10.80/28\",\n#    \"172.16.10.96/28\", \"172.16.10.112/28\", \"172.16.10.128/27\",\n#    \"172.16.10.160/27\", \"172.16.10.192/26\"]\n```\n\nAs you can see, most of the networks are `/28`, with a few `/27` and one `/26`\nto fill up the remaining space.\n\n#### Summarization\n\nSummarization (or aggregation) is the process when two or more networks are\ntaken together to check if a supernet, including all and only these networks,\nexists. If it exists then this supernet is called the summarized (or\naggregated) network.\n\nIt is important to understand that summarization can\nonly occur if there are no holes in the aggregated network, or, in other\nwords, if the given networks fill completely the address space of the\nsupernet.\n\nSo the two rules are:\n\n1. The aggregate network must contain `all` the IP addresses of the original\nnetworks;\n\n2. The aggregate network must contain `only` the IP addresses of the original\nnetworks;\n\nA few examples will help clarify the above. Let's consider for instance the\nfollowing two networks:\n\n```ruby\nip1 = IPAddress(\"172.16.10.0/24\")\nip2 = IPAddress(\"172.16.11.0/24\")\n```\n\nThese two networks can be expressed using only one IP address network if we\nchange the prefix:\n\n```ruby\nIPAddress::IPv4::summarize(ip1,ip2).map(\u0026:to_s) #=\u003e \"172.16.10.0/23\"\n```\n\nWe note how the network `172.16.10.0/23` includes all the addresses specified\nin the above networks, and (more important) includes only those addresses.\n\nIf we summarized `ip1` and `ip2` with the following network:\n\n```ruby\n\"172.16.0.0/16\"\n```\n\nwe would have satisfied rule #1 above, but not rule #2. So\n\n```ruby\n\"172.16.0.0/16\"\n```\n\nis not an aggregate network for `ip1` and `ip2`.\n\nIf it's not possible to compute a single aggregated network for all the\noriginal networks, the method returns an array with all the aggregate networks\nfound. For example, the following four networks can be aggregated in a single\n`/22`:\n\n```ruby\nip1 = IPAddress(\"10.0.0.1/24\")\nip2 = IPAddress(\"10.0.1.1/24\")\nip3 = IPAddress(\"10.0.2.1/24\")\nip4 = IPAddress(\"10.0.3.1/24\")\n\nIPAddress::IPv4::summarize(ip1, ip2, ip3, ip4).map { |i| i.to_s } #=\u003e [\"10.0.0.0/22\"]\n```\n\nBut the following networks can't be summarized in a single network:\n\n```ruby\nip1 = IPAddress(\"10.0.1.1/24\")\nip2 = IPAddress(\"10.0.2.1/24\")\nip3 = IPAddress(\"10.0.3.1/24\")\nip4 = IPAddress(\"10.0.4.1/24\")\n\nIPAddress::IPv4::summarize(ip1, ip2, ip3, ip4).map { |i| i.to_s } #=\u003e [\"10.0.1.0/24\",\"10.0.2.0/23\",\"10.0.4.0/24\"]\n```\n\nIn this case, the two summarizables networks have been aggregated into a\nsingle `/23`, while the other two networks have been left untouched.\n\n#### Supernetting\n\nSupernetting is a different operation than aggregation, as it only works on a\nsingle network and returns a new single IPv4 object, representing the\nsupernet.\n\nSupernetting is similar to subnetting, except that you getting as a result a\nnetwork with a smaller prefix (bigger host space). For example, given the\nnetwork\n\n```ruby\nip = IPAddress(\"172.16.10.0/24\")\n```\n\nyou can supernet it with a new /23 prefix\n\n```ruby\nip.supernet(23).to_s #=\u003e \"172.16.10.0/23\"\n```\n\nHowever if you supernet it with a `/22` prefix, the network address will\nchange:\n\n```ruby\nip.supernet(22).to_s #=\u003e \"172.16.8.0/22\"\n```\n\nThis is because `172.16.10.0/22` is not a network anymore, but an host\naddress.\n\n## IPv6\n\nIPAddress is not only fantastic for IPv4 addresses, it's also great to handle\nIPv6 addresses family! Let's discover together how to use it in our projects.\n\n### IPv6 addresses\n\nIPv6 addresses are 128 bits long, in contrast with IPv4 addresses which are\nonly 32 bits long. An IPv6 address is generally written as eight groups of\nfour hexadecimal digits, each group representing 16 bits or two octet. For\nexample, the following is a valid IPv6 address:\n\n```\n2001:0db8:0000:0000:0008:0800:200c:417a\n```\n\nLetters in an IPv6 address are usually written downcase, as per RFC. You can\ncreate a new IPv6 object using uppercase letters, but they will be converted.\n\n#### Compression\n\nSince IPv6 addresses are long to write, there are some simplifications\nand compressions that you can use to shorten them.\n\n* Leading zeroes: all the leading zeroes within a group can be omitted:\n\"0008\" would become \"8\"\n\n* A string of consecutive zeroes can be replaced by the string \"::\". This\ncan be only applied once.\n\nUsing compression, the IPv6 address written above can be shorten into the\nfollowing, equivalent, address\n\n```\n2001:db8::8:800:200c:417a\n```\n\nThis short version is often used in human representation.\n\n#### Network Mask\n\nAs we used to do with IPv4 addresses, an IPv6 address can be written using the\nprefix notation to specify the subnet mask:\n\n```\n2001:db8::8:800:200c:417a/64\n```\n\nThe /64 part means that the first 64 bits of the address are representing the\nnetwork portion, and the last 64 bits are the host portion.\n\n### Using IPAddress with IPv6 addresses\n\nAll the IPv6 representations we've just seen are perfectly fine when you want\nto create a new IPv6 address:\n\n```ruby\nip6 = IPAddress \"2001:0db8:0000:0000:0008:0800:200C:417A\"\n\nip6 = IPAddress \"2001:db8:0:0:8:800:200C:417A\"\n\nip6 = IPAddress \"2001:db8:8:800:200C:417A\"\n```\n\nAll three are giving out the same IPv6 object. The default subnet mask for an\nIPv6 is 128, as IPv6 addresses don't have classes like IPv4 addresses. If you\nwant a different mask, you can go ahead and explicit it:\n\n```ruby\nip6 = IPAddress \"2001:db8::8:800:200c:417a/64\"\n```\n\nAccess the address portion and the prefix by using the respective methods:\n\n```ruby\nip6 = IPAddress \"2001:db8::8:800:200c:417a/64\"\n\nip6.address #=\u003e \"2001:0db8:0000:0000:0008:0800:200c:417a\"\n\nip6.prefix #=\u003e 64\n```\n\nA compressed version of the IPv6 address can be obtained with the\n`IPv6#compressed` method:\n\n```ruby\nip6 = IPAddress \"2001:0db8:0000:0000:0008:200c:417a:00ab/64\"\n\nip6.compressed #=\u003e \"2001:db8::8:800:200c:417a\"\n```\n\n### Handling the IPv6 address\n\nAccessing the groups that form an IPv6 address is easy with the\n`IPv6#groups` method:\n\n```ruby\nip6 = IPAddress \"2001:db8::8:800:200c:417a/64\"\n\nip6.groups #=\u003e [8193, 3512, 0, 0, 8, 2048, 8204, 16762]\n```\n\nAs with IPv4 addresses, each individual group can be accessed using the\n`IPv6#[]` shortcut method:\n\n```ruby\nip6[0] #=\u003e 8193\nip6[1] #=\u003e 3512\nip6[2] #=\u003e 0\nip6[3] #=\u003e 0\n```\n\nNote that each 16 bits group is expressed in its decimal form. You can also\nobtain the groups into hexadecimal format using the `IPv6#hexs` method:\n\n```ruby\nip6.hexs #=\u003e [\"2001\", \"0db8\", \"0000\", \"0000\", \"0008\", \"0800\", \"200c\", \"417a\"]\n```\n\nA few other methods are available to transform an IPv6 address into decimal\nrepresentation, with `IPv6.to_i`\n\n```ruby\nip6.to_i #=\u003e 42540766411282592856906245548098208122\n```\n\nor to hexadecimal representation:\n\n```ruby\nip6.to_hex #=\u003e \"20010db80000000000080800200c417a\"\n```\n\nTo print out an IPv6 address in human readable form, use the `IPv6#to_string`,\n`IPv6#to_s` and `IPv6#to_string_uncompressed` methods:\n\n```ruby\nip6 = IPAddress \"2001:db8::8:800:200c:417a/64\"\n\nip6.to_string #=\u003e \"2001:db8::8:800:200c:417a/96\"\nip6.to_s #=\u003e \"2001:db8::8:800:200c:417a/96\"\n\nip6.to_string_uncompressed #=\u003e \"2001:0db8:0000:0000:0008:0800:200c:417a/96\"\n```\n\nAs you can see, `IPv6.to_string` prints out the compressed form, while\n`IPv6.to_string_uncompressed` uses the expanded version.\n\n#### Compressing and uncompressing\n\nIf you have a string representing an IPv6 address, you can easily compress it\nand uncompress it using the two class methods IPv6::expand and IPv6::compress.\n\nFor example, let's say you have the following uncompressed IPv6 address:\n\n```ruby\nstr = \"2001:0DB8:0000:CD30:0000:0000:0000:0000\"\n```\n\nHere is the compressed version:\n\n```ruby\nIPAddress::IPv6.compress(str) #=\u003e \"2001:db8:0:cd30::\"\n```\n\nThe other way works as well:\n\n```ruby\nstr = \"2001:db8:0:cd30::\"\n\nIPAddress::IPv6.expand(str) #=\u003e \"2001:0DB8:0000:CD30:0000:0000:0000:0000\"\n```\n\nThese methods can be used when you don't want to create a new object just for\nexpanding or compressing an address (although a new object is actually created\ninternally).\n\n### New IPv6 address from other formats\n\nYou can create a new IPv6 address from different formats than just a string\nrepresenting the colon-hex groups.\n\nFor instance, if you have a data stream, you can use `IPv6::parse_data`, like\nin the following example:\n\n```ruby\ndata = \" \\001\\r\\270\\000\\000\\000\\000\\000\\b\\b\\000 \\fAz\"\n\nip6 = IPAddress::IPv6::parse_data data\nip6.prefix = 64\n\nip6.to_s #=\u003e \"2001:db8::8:800:200c:417a/64\"\n```\n\nA new IPv6 address can also be created from an unsigned 128 bits integer:\n\n```ruby\nu128 = 42540766411282592856906245548098208122\n\nip6 = IPAddress::IPv6::parse_u128 u128\nip6.prefix = 64\n\nip6.to_s #=\u003e\"2001:db8::8:800:200c:417a/64\"\n```\n\nFinally, a new IPv6 address can be created from an hex string:\n\n```ruby\nhex = \"20010db80000000000080800200c417a\"\n\nip6 = IPAddress::IPv6::parse_hex hex\nip6.prefix = 64\n\nip6.to_s #=\u003e \"2001:db8::8:800:200c:417a/64\"\n```\n\n### Special IPv6 addresses\n\nSome IPv6 have a special meaning and are expressed in a special form, quite\ndifferent than an usual IPv6 address. IPAddress has built-in support for\nunspecified, loopback and mapped IPv6 addresses.\n\n#### Unspecified address\n\nThe address with all zero bits is called the `unspecified` address\n(corresponding to `0.0.0.0` in IPv4). It should be something like this:\n\n```\n0000:0000:0000:0000:0000:0000:0000:0000\n```\n\nbut, with the use of compression, it is usually written as just two colons:\n\n```\n::\n```\n\nor, specifying the netmask:\n\n```\n::/128\n```\n\nWith IPAddress, create a new unspecified IPv6 address using its own subclass:\n\n```ruby\nip = IPAddress::IPv6::Unspecified.new\n\nip.to_s #=\u003e \"::/128\"\n```\n\nYou can easily check if an IPv6 object is an unspecified address by using the\nIPv6#unspecified? method\n\n```ruby\nip.unspecified? #=\u003e true\n```\n\nAn unspecified IPv6 address can also be created with the wrapper method, like\nwe've seen before\n\n```ruby\nip = IPAddress \"::\"\n\nip.unspecified? #=\u003e true\n```\n\nThis address must never be assigned to an interface and is to be used only in\nsoftware before the application has learned its host's source address\nappropriate for a pending connection. Routers must not forward packets with\nthe unspecified address.\n\n#### Loopback address\n\nThe loopback address is a unicast localhost address. If an application in a\nhost sends packets to this address, the IPv6 stack will loop these packets\nback on the same virtual interface.\n\nLoopback addresses are expressed in the following form:\n\n```\n::1\n```\n\nor, with their appropriate prefix,\n\n```\n::1/128\n```\n\nAs for the unspecified addresses, IPv6 loopbacks can be created with IPAddress\ncalling their own class:\n\n```ruby\nip = IPAddress::IPv6::Loopback.new\n\nip.to_s #=\u003e \"::1/128\"\n```\n\nor by using the wrapper:\n\n```ruby\nip = IPAddress \"::1\"\n\nip.to_s #=\u003e \"::1/128\"\n```\n\nChecking if an address is loopback is easy with the `IPv6#loopback?` method:\n\n```ruby\nip.loopback? #=\u003e true\n```\n\nThe IPv6 loopback address corresponds to `127.0.0.1` in IPv4.\n\n#### Mapped address\n\nIt is usually identified as a IPv4 mapped IPv6 address, a particular IPv6\naddress which aids the transition from IPv4 to IPv6. The structure of the\naddress is\n\n```\n::ffff:w.y.x.z\n```\n\nwhere `w.x.y.z` is a normal IPv4 address. For example, the following is a\nmapped IPv6 address:\n\n```\n::ffff:192.168.100.1\n```\n\nIPAddress is powerful in handling mapped IPv6 addresses, as the IPv4\nportion is stored internally as a normal IPv4 object. Let's have a look at\nsome examples. To create a new mapped address, just use the class builder\nitself\n\n```ruby\nip6 = IPAddress::IPv6::Mapped.new \"::ffff:172.16.10.1/128\"\n```\n\nor just use the wrapper method\n\n```ruby\nip6 = IPAddress \"::ffff:172.16.10.1/128\"\n```\n\nLet's check it's really a mapped address:\n\n```ruby\nip6.mapped? #=\u003e true\n\nip6.to_s #=\u003e \"::ffff:172.16.10.1/128\"\n```\n\nNow with the `#ipv4` attribute, we can easily access the IPv4 portion of the\nmapped IPv6 address:\n\n```ruby\nip6.ipv4.address #=\u003e \"172.16.10.1\"\n```\n\nInternally, the IPv4 address is stored as two 16 bits groups. Therefore all\nthe usual methods for an IPv6 address are working perfectly fine:\n\n```ruby\nip6.to_hex #=\u003e \"00000000000000000000ffffac100a01\"\n\nip6.address #=\u003e \"0000:0000:0000:0000:0000:ffff:ac10:0a01\"\n```\n\nA mapped IPv6 can also be created just by specify the address in the following\nformat:\n\n```ruby\nip6 = IPAddress \"::172.16.10.1\"\n```\n\nThat is, two colons and the IPv4 address. However, as by RFC, the `ffff` group\nwill be automatically added at the beginning\n\n```ruby\nip6.to_s #=\u003e \"::ffff:172.16.10.1/128\"\n```\n\nmaking it a mapped IPv6 compatible address.\n\n## Why not using IPAddr?\n\nIPAddr is the IP addresses library that comes with Ruby standard lib. We found\nthis library, although well written, not suitable for all our needs.\n\nSome quick examples of things you can't do with IPAddr:\n\n* store both the address and the prefix information\n* quickly find the broadcast address of a network\n* iterate over hosts\n* perform subnetting or network aggregation\n\nMany methods and procedures are so old that they have been declared\ndeprecated by the IETF, and some others have bugs in their implementation.\n\nMoreover, IPAddress is more robust and is roughly twice as fast as IPAddr,\nin addition to provide an organic API with logical separation and code structure.\n\nWe hope that IPAddress will address all these issues and meet all your needs\nin network programming.\n\n## Community\n\nWant to join the community?\n\nWe have [discussions setup on Github](https://github.com/ipaddress-gem/ipaddress/discussions),\nwhere anyone can participate and discuss.\n\n## Thanks to\n\nThanks to Luca Russo (vargolo) and Simone Carletti (weppos) for all the\nsupport and technical review. Thanks to Marco Beri, Bryan T. Richardson,\nNicolas Fevrier, jdpace, Daniele Alessandri, jrdioko, Ghislain Charrier,\nPawel Krzesniak, Mark Sullivan, Leif Gensert, Erik Ahlström, Peter Vandenberk\nand Steve Rawlinson for their support, feedback and bug reports.\n\n## Copyright\n\nCopyright (c) 2009-today Marco Ceresa and Mike Mackintosh.\nSee LICENSE for details.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","rubygem","http-client","rack","activejob","mvc","rspec","yardoc","yard","ruby-documentation"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/61","html_url":"https://ruby.ecosyste.ms/projects/61"}