{"id":439,"name":null,"description":"Gem-authoring extensions for classes and modules.","url":"https://github.com/apotonick/uber","last_synced_at":"2026-05-01T01:30:20.619Z","repository":{"id":14591136,"uuid":"17307897","full_name":"apotonick/uber","owner":"apotonick","description":"Gem-authoring extensions for classes and modules.","archived":false,"fork":false,"pushed_at":"2025-05-06T06:13:15.000Z","size":94,"stargazers_count":93,"open_issues_count":8,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-03-06T09:58:42.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jeremyevans/roda","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apotonick.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-01T04:48:36.000Z","updated_at":"2026-01-03T18:00:14.000Z","dependencies_parsed_at":"2025-05-16T15:39:16.343Z","dependency_job_id":"5939f61e-7849-427f-84ae-1b998d43c668","html_url":"https://github.com/apotonick/uber","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/apotonick/uber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/sbom","scorecard":{"id":203183,"data":{"date":"2025-08-11","repo":{"name":"github.com/apotonick/uber","commit":"ca8e4fda55c7681b8960ed72e4471b1e12eb8f22"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"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":"Code-Review","score":1,"reason":"Found 3/26 approved changesets -- score normalized to 1","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"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":"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:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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 7 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-16T23:10:50.689Z","repository_id":14591136,"created_at":"2025-08-16T23:10:50.689Z","updated_at":"2025-08-16T23:10:50.689Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30410355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"ssl_error","status_checked_at":"2026-03-12T00:40:08.439Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":"apotonick","name":"Nick Sutterer","uuid":"10406","kind":"user","description":"","email":"","website":"http://trailblazer.to","location":null,"twitter":null,"company":"@trailblazer ","icon_url":"https://avatars.githubusercontent.com/u/10406?u=07fb57ecf10f63b322e0a4edced970d0de9a3aa0\u0026v=4","repositories_count":73,"last_synced_at":"2023-04-09T04:55:32.052Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/apotonick","funding_links":[],"total_stars":2083,"followers":null,"following":null,"created_at":"2022-11-02T16:20:24.532Z","updated_at":"2024-03-25T17:29:05.445Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick/repositories"},"packages":[{"id":13713525,"name":"ruby-uber","ecosystem":"debian","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:43:23.579Z","latest_release_published_at":"2026-02-12T23:43:23.579Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-13T15:50:27.229Z","created_at":"2026-02-12T23:43:23.400Z","updated_at":"2026-03-13T15:50:27.230Z","registry_url":"https://tracker.debian.org/pkg/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":"https://packages.debian.org/bookworm/ruby-uber","metadata":{"component":"main","architecture":"all","priority":"extra","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:43:24.159Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-uber?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-27T18:20:38.992Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":13407451,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T16:12:44.749Z","latest_release_published_at":"2026-02-06T16:12:44.749Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-06T16:42:21.725Z","created_at":"2026-02-06T16:12:44.439Z","updated_at":"2026-03-06T16:42:21.725Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-27T18:20:35.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":13531140,"name":"ruby-uber","ecosystem":"debian","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:40:58.191Z","latest_release_published_at":"2026-02-10T23:40:58.191Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-13T10:27:37.879Z","created_at":"2026-02-10T23:40:57.976Z","updated_at":"2026-03-13T10:27:37.880Z","registry_url":"https://tracker.debian.org/pkg/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":"https://packages.debian.org/bullseye/ruby-uber","metadata":{"component":"main","architecture":"all","priority":"extra","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:27:09.428Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-uber?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-27T18:20:39.352Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":13805501,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:34:49.038Z","latest_release_published_at":"2026-02-13T18:34:49.038Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-14T03:16:01.196Z","created_at":"2026-02-13T18:34:48.859Z","updated_at":"2026-03-14T03:16:01.197Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:34:49.836Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-27T18:20:38.051Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":13606208,"name":"ruby-uber","ecosystem":"debian","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:29:01.888Z","latest_release_published_at":"2026-02-11T11:29:01.888Z","latest_release_number":"0.1.0-1","last_synced_at":"2026-03-14T03:02:27.267Z","created_at":"2026-02-11T11:29:01.687Z","updated_at":"2026-03-14T03:02:27.268Z","registry_url":"https://tracker.debian.org/pkg/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":"https://packages.debian.org/buster/ruby-uber","metadata":{"component":"main","architecture":"all","priority":"extra","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:29.023Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-uber?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-04-27T18:20:39.693Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13751867,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:24:41.898Z","latest_release_published_at":"2026-02-13T07:24:41.898Z","latest_release_number":"0.1.0-1","last_synced_at":"2026-03-13T20:23:19.234Z","created_at":"2026-02-13T07:24:41.706Z","updated_at":"2026-03-13T20:23:19.234Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:24:42.513Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-27T18:20:36.874Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":13567332,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:51:45.800Z","latest_release_published_at":"2026-02-11T06:51:45.800Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-11T19:18:21.179Z","created_at":"2026-02-11T06:51:45.629Z","updated_at":"2026-03-11T19:18:21.180Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:57:18.400Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-27T18:20:38.741Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":12347461,"name":"uber","ecosystem":"rubygems","description":"A gem-authoring framework.","homepage":"https://github.com/apotonick/uber","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/apotonick/uber","keywords_array":[],"namespace":null,"versions_count":16,"first_release_published_at":"2013-02-07T16:43:41.790Z","latest_release_published_at":"2016-11-10T09:11:33.647Z","latest_release_number":"0.1.0","last_synced_at":"2026-04-27T02:31:10.317Z","created_at":"2025-10-07T06:40:40.528Z","updated_at":"2026-04-27T02:33:51.371Z","registry_url":"https://gem.coop/gems/uber","install_command":"gem install uber -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/uber/","metadata":{"funding":null},"repo_metadata":{"id":14591136,"uuid":"17307897","full_name":"apotonick/uber","owner":"apotonick","description":"Gem-authoring extensions for classes and modules.","archived":false,"fork":false,"pushed_at":"2025-05-06T06:13:15.000Z","size":94,"stargazers_count":93,"open_issues_count":8,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-03-06T09:58:42.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jeremyevans/roda","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apotonick.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-01T04:48:36.000Z","updated_at":"2026-01-03T18:00:14.000Z","dependencies_parsed_at":"2025-05-16T15:39:16.343Z","dependency_job_id":"5939f61e-7849-427f-84ae-1b998d43c668","html_url":"https://github.com/apotonick/uber","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/apotonick/uber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/sbom","scorecard":{"id":203183,"data":{"date":"2025-08-11","repo":{"name":"github.com/apotonick/uber","commit":"ca8e4fda55c7681b8960ed72e4471b1e12eb8f22"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"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":"Code-Review","score":1,"reason":"Found 3/26 approved changesets -- score normalized to 1","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"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":"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:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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 7 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-16T23:10:50.689Z","repository_id":14591136,"created_at":"2025-08-16T23:10:50.689Z","updated_at":"2025-08-16T23:10:50.689Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30410355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"ssl_error","status_checked_at":"2026-03-12T00:40:08.439Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"apotonick","name":"Nick Sutterer","uuid":"10406","kind":"user","description":"","email":"","website":"http://trailblazer.to","location":null,"twitter":null,"company":"@trailblazer ","icon_url":"https://avatars.githubusercontent.com/u/10406?u=07fb57ecf10f63b322e0a4edced970d0de9a3aa0\u0026v=4","repositories_count":73,"last_synced_at":"2023-04-09T04:55:32.052Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/apotonick","funding_links":[],"total_stars":2083,"followers":null,"following":null,"created_at":"2022-11-02T16:20:24.532Z","updated_at":"2024-03-25T17:29:05.445Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick/repositories"},"tags":[{"name":"v0.1.0","sha":"b254e0c6cff2947ebc52d6aed5476990f22e03d1","kind":"commit","published_at":"2016-11-10T09:10:11.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.1.0","html_url":"https://github.com/apotonick/uber/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.1.0/manifests"},{"name":"v0.0.15","sha":"3ecc0cc3bb3ce7b90f79943ec6e25b3ccb2964e8","kind":"commit","published_at":"2015-09-01T06:29:21.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.15","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.15","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.15","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.15/manifests"},{"name":"v0.0.14","sha":"b3daf2ace29bc9f2809058d990ca3973222b9d0a","kind":"commit","published_at":"2015-07-08T04:07:29.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.14","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.14","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.14","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.14/manifests"},{"name":"v0.0.13","sha":"2b1e1e249a7ca5c665eae262547eceb2669ee132","kind":"commit","published_at":"2015-01-14T22:08:14.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.13","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.13","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.13","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.13/manifests"},{"name":"v0.0.12","sha":"8110bfc4043d55f40642f8dfd074c3fec000c79c","kind":"commit","published_at":"2014-12-25T23:14:26.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.12","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.12","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.12","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.12/manifests"},{"name":"v0.0.11","sha":"472a77f55bf72680be351a6490209d4799e63183","kind":"commit","published_at":"2014-11-10T23:52:47.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.11","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.11/manifests"},{"name":"v0.0.10","sha":"85d1d146cf7b68350bba81c19a8a2a6256aa1a37","kind":"commit","published_at":"2014-10-23T00:51:54.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.10","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"2fe091489d99e598011efdaca76522d9c8ee2d49","kind":"commit","published_at":"2014-10-08T23:12:23.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.9","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"0203ef826ac3243c8b90a8588b3a5c27f80c32a4","kind":"commit","published_at":"2014-08-01T04:47:56.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.8","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"d50359524f4afeb57ef33d1dc71f70fd97ccb447","kind":"commit","published_at":"2014-07-01T09:49:38.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.7","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.7/manifests"},{"name":"v0.0.6","sha":"16d8efc1ab1d260a13fd96889d0e55d09acefb7a","kind":"commit","published_at":"2014-05-08T01:08:28.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.6","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"c285d2a9f1ba729839ac363eaf2117dd6d04ad20","kind":"commit","published_at":"2014-05-08T00:16:19.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.5","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"f5773bd688238aee299d938532cd6ce307d052a5","kind":"commit","published_at":"2014-03-08T11:44:21.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.4","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"526b03fda429fdc2f8407a441f4f5c466fd6dd77","kind":"commit","published_at":"2014-03-08T10:46:50.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.3","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"9f00a0aefe42824416492de6b2087b46bfb4d3e6","kind":"commit","published_at":"2014-03-06T22:47:50.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.2","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"4eaebfb9339b8160ea78d994d0283151b3ce0d84","kind":"commit","published_at":"2014-03-06T22:44:14.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.1","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-27T02:33:51.351Z","dependent_packages_count":0,"downloads":343202778,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.07298599209588738,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":0.02432866403196246},"purl":"pkg:gem/uber?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/uber","docker_dependents_count":971,"docker_downloads_count":573246066,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-01T11:00:23.751Z","issues_count":4,"pull_requests_count":21,"avg_time_to_close_issue":24233.0,"avg_time_to_close_pull_request":8495294.333333334,"issues_closed_count":2,"pull_requests_closed_count":15,"pull_request_authors_count":18,"issue_authors_count":4,"avg_comments_per_issue":1.75,"avg_comments_per_pull_request":1.9047619047619049,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2956628.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":2.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/uber/codemeta","maintainers":[{"uuid":"43380","login":"apotonick","name":null,"email":null,"url":null,"packages_count":61,"html_url":"https://gem.coop/profiles/apotonick","role":null,"created_at":"2025-10-09T23:59:46.498Z","updated_at":"2025-10-09T23:59:46.498Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/apotonick/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190339,"maintainers_count":67463,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":13669679,"name":"ruby-uber","ecosystem":"debian","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:47:03.710Z","latest_release_published_at":"2026-02-12T12:47:03.710Z","latest_release_number":"0.1.0-2","last_synced_at":"2026-03-14T18:12:04.603Z","created_at":"2026-02-12T12:47:03.049Z","updated_at":"2026-03-14T18:12:04.603Z","registry_url":"https://tracker.debian.org/pkg/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":"https://packages.debian.org/trixie/ruby-uber","metadata":{"component":"main","architecture":"all","priority":"extra","binary":"ruby-uber","standards_version":"4.7.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:47:04.343Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-uber?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-04-27T18:20:39.853Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}},{"id":13779996,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:28:04.231Z","latest_release_published_at":"2026-02-13T13:28:04.231Z","latest_release_number":"0.1.0-1.1","last_synced_at":"2026-03-13T23:40:31.252Z","created_at":"2026-02-13T13:28:04.038Z","updated_at":"2026-03-13T23:40:31.253Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":14591136,"uuid":"17307897","full_name":"apotonick/uber","owner":"apotonick","description":"Gem-authoring extensions for classes and modules.","archived":false,"fork":false,"pushed_at":"2025-05-06T06:13:15.000Z","size":94,"stargazers_count":93,"open_issues_count":8,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-02-11T16:50:30.443Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jeremyevans/roda","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apotonick.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-01T04:48:36.000Z","updated_at":"2026-01-03T18:00:14.000Z","dependencies_parsed_at":"2025-05-16T15:39:16.343Z","dependency_job_id":"5939f61e-7849-427f-84ae-1b998d43c668","html_url":"https://github.com/apotonick/uber","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/apotonick/uber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/sbom","scorecard":{"id":203183,"data":{"date":"2025-08-11","repo":{"name":"github.com/apotonick/uber","commit":"ca8e4fda55c7681b8960ed72e4471b1e12eb8f22"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"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":"Code-Review","score":1,"reason":"Found 3/26 approved changesets -- score normalized to 1","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"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":"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:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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 7 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-16T23:10:50.689Z","repository_id":14591136,"created_at":"2025-08-16T23:10:50.689Z","updated_at":"2025-08-16T23:10:50.689Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29404701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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"}},"repo_metadata_updated_at":"2026-02-13T13:28:04.502Z","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":1.4436116538831696,"forks_count":1.417364169267112,"docker_downloads_count":null,"average":0.7152439557875704},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-27T18:20:36.155Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":13467442,"name":"ruby-uber","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/apotonick/uber","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/apotonick/uber","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:28:31.243Z","latest_release_published_at":"2026-02-09T17:28:31.243Z","latest_release_number":"0.1.0-1.1ubuntu1","last_synced_at":"2026-03-09T18:23:42.599Z","created_at":"2026-02-09T17:28:30.966Z","updated_at":"2026-03-09T18:32:55.041Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-uber","install_command":"apt-get install ruby-uber","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-uber","standards_version":"4.0.0","maintainer":"Ubuntu Developers \u003cubuntu-devel-discuss@lists.ubuntu.com\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, rake","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-uber?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-uber","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-uber/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-uber/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-04-27T18:20:37.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":321567,"name":"uber","ecosystem":"rubygems","description":"A gem-authoring framework.","homepage":"https://github.com/apotonick/uber","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/apotonick/uber","keywords_array":[],"namespace":null,"versions_count":16,"first_release_published_at":"2013-02-07T16:43:41.790Z","latest_release_published_at":"2016-11-10T09:11:33.647Z","latest_release_number":"0.1.0","last_synced_at":"2026-04-25T09:46:51.584Z","created_at":"2022-04-06T12:01:59.834Z","updated_at":"2026-04-25T10:50:00.557Z","registry_url":"https://rubygems.org/gems/uber","install_command":"gem install uber -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/uber/","metadata":{"funding":null},"repo_metadata":{"id":14591136,"uuid":"17307897","full_name":"apotonick/uber","owner":"apotonick","description":"Gem-authoring extensions for classes and modules.","archived":false,"fork":false,"pushed_at":"2025-05-06T06:13:15.000Z","size":94,"stargazers_count":93,"open_issues_count":8,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-03-06T09:58:42.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jeremyevans/roda","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apotonick.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-03-01T04:48:36.000Z","updated_at":"2026-01-03T18:00:14.000Z","dependencies_parsed_at":"2025-05-16T15:39:16.343Z","dependency_job_id":"5939f61e-7849-427f-84ae-1b998d43c668","html_url":"https://github.com/apotonick/uber","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/apotonick/uber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/sbom","scorecard":{"id":203183,"data":{"date":"2025-08-11","repo":{"name":"github.com/apotonick/uber","commit":"ca8e4fda55c7681b8960ed72e4471b1e12eb8f22"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"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":"Code-Review","score":1,"reason":"Found 3/26 approved changesets -- score normalized to 1","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/apotonick/uber/build.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"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":"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:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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 7 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-16T23:10:50.689Z","repository_id":14591136,"created_at":"2025-08-16T23:10:50.689Z","updated_at":"2025-08-16T23:10:50.689Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30410355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"ssl_error","status_checked_at":"2026-03-12T00:40:08.439Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"apotonick","name":"Nick Sutterer","uuid":"10406","kind":"user","description":"","email":"","website":"http://trailblazer.to","location":null,"twitter":null,"company":"@trailblazer ","icon_url":"https://avatars.githubusercontent.com/u/10406?u=07fb57ecf10f63b322e0a4edced970d0de9a3aa0\u0026v=4","repositories_count":73,"last_synced_at":"2023-04-09T04:55:32.052Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/apotonick","funding_links":[],"total_stars":2083,"followers":null,"following":null,"created_at":"2022-11-02T16:20:24.532Z","updated_at":"2024-03-25T17:29:05.445Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apotonick/repositories"},"tags":[{"name":"v0.1.0","sha":"b254e0c6cff2947ebc52d6aed5476990f22e03d1","kind":"commit","published_at":"2016-11-10T09:10:11.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.1.0","html_url":"https://github.com/apotonick/uber/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.1.0/manifests"},{"name":"v0.0.15","sha":"3ecc0cc3bb3ce7b90f79943ec6e25b3ccb2964e8","kind":"commit","published_at":"2015-09-01T06:29:21.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.15","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.15","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.15","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.15/manifests"},{"name":"v0.0.14","sha":"b3daf2ace29bc9f2809058d990ca3973222b9d0a","kind":"commit","published_at":"2015-07-08T04:07:29.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.14","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.14","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.14","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.14/manifests"},{"name":"v0.0.13","sha":"2b1e1e249a7ca5c665eae262547eceb2669ee132","kind":"commit","published_at":"2015-01-14T22:08:14.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.13","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.13","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.13","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.13/manifests"},{"name":"v0.0.12","sha":"8110bfc4043d55f40642f8dfd074c3fec000c79c","kind":"commit","published_at":"2014-12-25T23:14:26.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.12","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.12","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.12","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.12/manifests"},{"name":"v0.0.11","sha":"472a77f55bf72680be351a6490209d4799e63183","kind":"commit","published_at":"2014-11-10T23:52:47.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.11","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.11/manifests"},{"name":"v0.0.10","sha":"85d1d146cf7b68350bba81c19a8a2a6256aa1a37","kind":"commit","published_at":"2014-10-23T00:51:54.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.10","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"2fe091489d99e598011efdaca76522d9c8ee2d49","kind":"commit","published_at":"2014-10-08T23:12:23.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.9","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"0203ef826ac3243c8b90a8588b3a5c27f80c32a4","kind":"commit","published_at":"2014-08-01T04:47:56.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.8","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"d50359524f4afeb57ef33d1dc71f70fd97ccb447","kind":"commit","published_at":"2014-07-01T09:49:38.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.7","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.7/manifests"},{"name":"v0.0.6","sha":"16d8efc1ab1d260a13fd96889d0e55d09acefb7a","kind":"commit","published_at":"2014-05-08T01:08:28.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.6","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"c285d2a9f1ba729839ac363eaf2117dd6d04ad20","kind":"commit","published_at":"2014-05-08T00:16:19.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.5","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"f5773bd688238aee299d938532cd6ce307d052a5","kind":"commit","published_at":"2014-03-08T11:44:21.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.4","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"526b03fda429fdc2f8407a441f4f5c466fd6dd77","kind":"commit","published_at":"2014-03-08T10:46:50.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.3","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"9f00a0aefe42824416492de6b2087b46bfb4d3e6","kind":"commit","published_at":"2014-03-06T22:47:50.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.2","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"4eaebfb9339b8160ea78d994d0283151b3ce0d84","kind":"commit","published_at":"2014-03-06T22:44:14.000Z","download_url":"https://codeload.github.com/apotonick/uber/tar.gz/v0.0.1","html_url":"https://github.com/apotonick/uber/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/apotonick/uber@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-25T10:50:00.533Z","dependent_packages_count":29,"downloads":343099676,"downloads_period":"total","dependent_repos_count":35642,"rankings":{"downloads":0.08195715926450418,"dependent_repos_count":0.17116223057280805,"dependent_packages_count":0.8034031734704118,"stargazers_count":5.6104414535966365,"forks_count":5.621592087510175,"docker_downloads_count":0.2263578684448211,"average":2.085818995476559},"purl":"pkg:gem/uber","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/uber","docker_dependents_count":971,"docker_downloads_count":573246066,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/uber","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/uber/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-01T11:00:23.751Z","issues_count":4,"pull_requests_count":21,"avg_time_to_close_issue":24233.0,"avg_time_to_close_pull_request":8495294.333333334,"issues_closed_count":2,"pull_requests_closed_count":15,"pull_request_authors_count":18,"issue_authors_count":4,"avg_comments_per_issue":1.75,"avg_comments_per_pull_request":1.9047619047619049,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2956628.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":2.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/uber/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/uber/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/uber/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/uber/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/uber/codemeta","maintainers":[{"uuid":"43380","login":"apotonick","name":null,"email":null,"url":null,"packages_count":61,"html_url":"https://rubygems.org/profiles/apotonick","role":null,"created_at":"2022-11-09T09:55:10.008Z","updated_at":"2022-11-09T09:55:10.008Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/apotonick/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205486,"maintainers_count":68455,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}}],"commits":{"id":924686,"full_name":"apotonick/uber","default_branch":"master","total_commits":99,"total_committers":12,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":8.25,"dds":0.16161616161616166,"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-27T16:26:03.632Z","last_synced_commit":"ca8e4fda55c7681b8960ed72e4471b1e12eb8f22","created_at":"2023-03-10T00:02:54.877Z","updated_at":"2026-04-27T16:25:47.356Z","committers":[{"name":"Nick Sutterer","email":"apotonick@gmail.com","login":"apotonick","count":83},{"name":"katafrakt","email":"inquebrantable@gmail.com","login":"katafrakt","count":3},{"name":"Zsolt Parragi","email":"zsolt.parragi@cancellar.hu","login":"dutow","count":2},{"name":"Sylvain Joyeux","email":"sylvain.joyeux@m4x.org","login":"doudou","count":2},{"name":"Josef Šimánek","email":"josef.simanek@gmail.com","login":"simi","count":2},{"name":"Timo Schilling","email":"timo@schilling.io","login":"timoschilling","count":1},{"name":"Ryunosuke SATO","email":"tricknotes.rs@gmail.com","login":"tricknotes","count":1},{"name":"Philip Arndt","email":"git@arndt.io","login":"parndt","count":1},{"name":"Jeremy Friesen","email":"jeremy.n.friesen@gmail.com","login":"jeremyf","count":1},{"name":"Celso Fernandes","email":"fernandes@zertico.com","login":"fernandes","count":1},{"name":"Anatol","email":"anatol.pomozov@gmail.com","login":"anatol","count":1},{"name":"Robert Ross","email":"rross@digitalocean.com","login":null,"count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-27T00:00:06.983Z","repositories_count":6220425,"commits_count":899865601,"contributors_count":34880009,"owners_count":1146414,"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":"apotonick/uber","html_url":"https://github.com/apotonick/uber","last_synced_at":"2026-04-27T21:22:01.226Z","status":"error","issues_count":4,"pull_requests_count":21,"avg_time_to_close_issue":24233.0,"avg_time_to_close_pull_request":8495294.333333334,"issues_closed_count":2,"pull_requests_closed_count":15,"pull_request_authors_count":18,"issue_authors_count":4,"avg_comments_per_issue":1.75,"avg_comments_per_pull_request":1.9047619047619049,"merged_pull_requests_count":11,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2956628.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":2.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2023-05-12T18:45:01.038Z","updated_at":"2026-04-27T21:22:01.226Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/apotonick%2Fuber/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":3,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":13,"NONE":10},"issue_authors":{"jcarlos7121":1,"ffloyd":1,"timoschilling":1,"dvgica":1},"pull_request_authors":{"seuros":2,"timoschilling":2,"katafrakt":2,"boutil":2,"simi":2,"tricknotes":1,"bobbytables":1,"asiniy":1,"fernandes":1,"amatsuda":1,"olleolleolle":1,"jeremyf":1,"doudou":1,"anatol":1,"mrbongiolo":1,"dutow":1,"parndt":1,"bolshakov":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-28T00:00:08.715Z","repositories_count":14434165,"issues_count":34414634,"pull_requests_count":112666495,"authors_count":11247243,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":2,"ForkEvent":1,"WatchEvent":1,"IssueCommentEvent":5,"PushEvent":1},"last_year":{"PullRequestEvent":1,"IssueCommentEvent":3,"PushEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-09-15T16:20:56.433Z","updated_at":"2022-09-15T16:20:56.433Z","repository_link":"https://github.com/apotonick/uber/blob/master/Gemfile","dependencies":[{"id":4959966719,"package_name":"benchmark-ips","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"uber.gemspec","sha":null,"kind":"manifest","created_at":"2022-09-15T16:20:56.484Z","updated_at":"2022-09-15T16:20:56.484Z","repository_link":"https://github.com/apotonick/uber/blob/master/uber.gemspec","dependencies":[{"id":4959966740,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":4959966741,"package_name":"minitest","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2025-05-16T15:39:13.651Z","updated_at":"2025-05-16T15:39:13.651Z","repository_link":"https://github.com/apotonick/uber/blob/master/.github/workflows/build.yml","dependencies":[{"id":23161417364,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":23161417365,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2025-05-16T15:39:13.715Z","updated_at":"2025-05-16T15:39:13.715Z","repository_link":"https://github.com/apotonick/uber/blob/master/Gemfile.lock","dependencies":[{"id":23161417366,"package_name":"benchmark-ips","ecosystem":"rubygems","requirements":"2.14.0","direct":false,"kind":"runtime","optional":false},{"id":23161417594,"package_name":"minitest","ecosystem":"rubygems","requirements":"4.7.5","direct":false,"kind":"runtime","optional":false},{"id":23161417595,"package_name":"rake","ecosystem":"rubygems","requirements":"13.2.1","direct":false,"kind":"runtime","optional":false},{"id":23161417596,"package_name":"uber","ecosystem":"rubygems","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":23161417792,"package_name":"bundler","ecosystem":"rubygems","requirements":"2.6.4","direct":false,"kind":"runtime","optional":false}]}],"score":28.429155424325764,"created_at":"2024-12-15T21:38:08.048Z","updated_at":"2026-05-01T01:30:20.620Z","avatar_url":"https://github.com/apotonick.png","language":"Ruby","monthly_downloads":0,"readme":"# Uber\n\n_Gem-authoring tools like class method inheritance in modules, dynamic options and more._\n\n## Installation\n\n[![Gem Version](https://badge.fury.io/rb/uber.svg)](http://badge.fury.io/rb/uber)\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'uber'\n```\n\nUber runs with Ruby \u003e= 1.9.3.\n\n# Inheritable Class Attributes\n\nIf you want inherited class attributes, this is for you.\nThis is a mandatory mechanism for creating DSLs.\n\n```ruby\nrequire 'uber/inheritable_attr'\n\nclass Song\n  extend Uber::InheritableAttr\n\n  inheritable_attr :properties\n  self.properties = [:title, :track] # initialize it before using it.\nend\n```\n\nNote that you have to initialize your class attribute with whatever you want - usually a hash or an array.\n\n```ruby\nSong.properties #=\u003e [:title, :track]\n```\n\nA subclass of `Song` will have a `clone`d `properties` class attribute.\n\n```ruby\nclass Hit \u003c Song\nend\n\nHit.properties #=\u003e [:title, :track]\n```\n\nThe cool thing about the inheritance is: you can work on the inherited attribute without any restrictions. It is a _copy_ of the original.\n\n```ruby\nHit.properties \u003c\u003c :number\n\nHit.properties  #=\u003e [:title, :track, :number]\nSong.properties #=\u003e [:title, :track]\n```\n\nIt's similar to ActiveSupport's `class_attribute` but with a simpler implementation.\nIt is less dangerous. There are no restrictions for modifying the attribute. [compared to `class_attribute`](http://apidock.com/rails/v4.0.2/Class/class_attribute).\n\n## Uncloneable Values\n\n`::inheritable_attr` will `clone` values to copy them to subclasses. Uber won't attempt to clone `Symbol`, `nil`, `true` and `false` per default.\n\nIf you assign any other unclonable value you need to tell Uber that.\n\n```ruby\nclass Song\n  extend Uber::InheritableAttr\n  inheritable_attr :properties, clone: false\n```\n\nThis won't `clone` but simply pass the value on to the subclass.\n\n\n# Dynamic Options\n\nImplements the pattern of defining configuration options and dynamically evaluating them at run-time.\n\nUsually DSL methods accept a number of options that can either be static values, symbolized instance method names, or blocks (lambdas/Procs).\n\nHere's an example from Cells.\n\n```ruby\ncache :show, tags: lambda { Tag.last }, expires_in: 5.mins, ttl: :time_to_live\n```\n\nUsually, when processing these options, you'd have to check every option for its type, evaluate the `tags:` lambda in a particular context, call the `#time_to_live` instance method, etc.\n\nThis is abstracted in `Uber::Options` and could be implemented like this.\n\n```ruby\nrequire 'uber/options'\n\noptions = Uber::Options.new(tags:       lambda { Tag.last },\n                            expires_in: 5.mins,\n                            ttl:        :time_to_live)\n```\n\nJust initialize `Options` with your actual options hash. While this usually happens on class level at compile-time, evaluating the hash happens at run-time.\n\n```ruby\nclass User \u003c ActiveRecord::Base # this could be any Ruby class.\n  # .. lots of code\n\n  def time_to_live(*args)\n    \"n/a\"\n  end\nend\n\nuser = User.find(1)\n\noptions.evaluate(user, *args) #=\u003e {tags: \"hot\", expires_in: 300, ttl: \"n/a\"}\n```\n\n## Evaluating Dynamic Options\n\nTo evaluate the options to a real hash, the following happens:\n\n* The `tags:` lambda is executed in `user` context (using `instance_exec`). This allows accessing instance variables or calling instance methods.\n* Nothing is done with `expires_in`'s value, it is static.\n* `user.time_to_live?` is called as the symbol `:time_to_live` indicates that this is an instance method.\n\nThe default behaviour is to treat `Proc`s, lambdas and symbolized `:method` names as dynamic options, everything else is considered static. Optional arguments from the `evaluate` call are passed in either as block or method arguments for dynamic options.\n\nThis is a pattern well-known from Rails and other frameworks.\n\n## Uber::Callable\n\nA third way of providing a dynamic option is using a \"callable\" object. This saves you the unreadable lambda syntax and gives you more flexibility.\n\n```ruby\nrequire 'uber/callable'\nclass Tags\n  include Uber::Callable\n\n  def call(context, *args)\n    [:comment]\n  end\nend\n```\n\nBy including `Uber::Callable`, uber will invoke the `#call` method on the specified object.\n\nNote how you simply pass an instance of the callable object into the hash instead of a lambda.\n\n```ruby\noptions = Uber::Options.new(tags: Tags.new)\n```\n\n## Option\n\n`Uber::Option` implements the pattern of taking an option, such as a proc, instance method name, or static value, and evaluate it at runtime without knowing the option's implementation.\n\nCreating `Option` instances via `::[]` usually happens on class-level in DSL methods.\n\n```ruby\nwith_proc    = Uber::Option[ -\u003e(options) { \"proc: #{options.inspect}\" } ]\nwith_static  = Uber::Option[ \"Static value\" ]\nwith_method  = Uber::Option[ :name_of_method ]\n\ndef name_of_method(options)\n  \"method: #{options.inspect}\"\nend\n```\n\nUse `#call` to evaluate the options at runtime.\n\n```ruby\nwith_proc.(1, 2)         #=\u003e \"proc: [1, 2]\"\nwith_static.(1, 2)       #=\u003e \"Static value\"   # arguments are ignored\nwith_method.(self, 1, 2) #=\u003e \"method: [1, 2]\" # first arg is context\n```\n\nIt's also possible to evaluate a callable object. It has to be marked with `Uber::Callable` beforehand.\n\n```ruby\nclass MyCallable\n  include Uber::Callable\n\n  def call(context, *args)\n    \"callable: #{args.inspect}, #{context}\"\n  end\nend\n\nwith_callable = Uber::Option[ MyCallable.new ]\n```\n\nThe context is passed as first argument.\n\n```ruby\nwith_callable.(Object, 1, 2) #=\u003e \"callable: [1, 2] Object\"\n```\n\nYou can also make blocks being `instance_exec`ed on the context, giving a unique API to all option types.\n\n```ruby\nwith_instance_proc  = Uber::Option[ -\u003e(options) { \"proc: #{options.inspect} #{self}\" }, instance_exec: true ]\n```\n\nThe first argument now becomes the context, exactly the way it works for the method and callable type.\n\n```ruby\nwith_instance_proc.(Object, 1, 2) #=\u003e \"proc [1, 2] Object\"\n```\n\n\n# Delegates\n\nUsing `::delegates` works exactly like the `Forwardable` module in Ruby, with one bonus: It creates the accessors in a module, allowing you to override and call `super` in a user module or class.\n\n```ruby\nrequire 'uber/delegates'\n\nclass SongDecorator\n  def initialize(song)\n    @song = song\n  end\n  attr_reader :song\n\n  extend Uber::Delegates\n\n  delegates :song, :title, :id # delegate :title and :id to #song.\n\n  def title\n    super.downcase # this calls the original delegate #title.\n  end\nend\n```\n\nThis creates readers `#title` and `#id` which are delegated to `#song`.\n\n```ruby\nsong = SongDecorator.new(Song.create(id: 1, title: \"HELLOWEEN!\"))\n\nsong.id #=\u003e 1\nsong.title #=\u003e \"helloween!\"\n```\n\nNote how `#title` calls the original title and then downcases the string.\n\n# Builder\n\nBuilders are good for polymorphically creating objects without having to know where that happens. You define a builder with conditions in one class, and that class takes care of creating the actual desired class.\n\n## Declarative Interface\n\nInclude `Uber::Builder` to leverage the `::builds` method for adding builders, and `::build!` to run those builders in a given context and with arbitrary options.\n\n\n```ruby\nrequire \"uber/builder\"\n\nclass User\n  include Uber::Builder\n\n  builds do |options|\n    Admin if params[:admin]\n  end\nend\n\nclass Admin\nend\n```\n\nNote that you can call `builds` as many times as you want per class.\n\nRun the builders using `::build!`.\n\n```ruby\nUser.build!(User, {})              #=\u003e User\nUser.build!(User, { admin: true }) #=\u003e Admin\n```\nThe first argument is the context in which the builder blocks will be executed. This is also the default return value if all builders returned a falsey value.\n\nAll following arguments will be passed straight through to the procs.\n\nYour API should communicate `User` as the only public class, since the builder hides details about computing the concrete class.\n\n### Builder: Procs\n\nYou may also use procs instead of blocks.\n\n```ruby\nclass User\n  include Uber::Builder\n\n  builds -\u003e(options) do\n    return SignedIn if params[:current_user]\n    return Admin    if params[:admin]\n    Anonymous\n  end\nend\n```\n\nNote that this allows `return`s in the block.\n\n## Builder: Direct API\n\nIn case you don't want the `builds` DSL, you can instantiate a `Builders` object yourself and add builders to it using `#\u003c\u003c`.\n\n```ruby\nMyBuilders = Uber::Builder::Builders.new\nMyBuilders \u003c\u003c -\u003e(options) do\n  return Admin if options[:admin]\nend\n```\n\nNote that you can call `Builders#\u003c\u003c` multiple times per instance.\n\nInvoke the builder using `#call`.\n\n```ruby\nMyBuilders.call(User, {})              #=\u003e User\nMyBuilders.call(User, { admin: true }) #=\u003e Admin\n```\n\nAgain, the first object is the context/default return value, all other arguments are passed to the builder procs.\n\n## Builder: Contexts\n\nEvery proc is `instance_exec`ed in the context you pass into `build!` (or `call`), allowing you to define generic, shareable builders.\n\n```ruby\nMyBuilders = Uber::Builder::Builders.new\nMyBuilders \u003c\u003c -\u003e(options) do\n  return self::Admin if options[:admin] # note the self:: !\nend\n\nclass User\n  class Admin\n  end\nend\n\nclass Instructor\n  class Admin\n  end\nend\n```\n\nNow, depending on the context class, the builder will return different classes.\n\n```ruby\nMyBuilders.call(User, {})              #=\u003e User\nMyBuilders.call(User, { admin: true }) #=\u003e User::Admin\nMyBuilders.call(Instructor, {})              #=\u003e Instructor\nMyBuilders.call(Instructor, { admin: true }) #=\u003e Instructor::Admin\n```\n\nDon't forget the `self::` when writing generic builders, and write tests.\n\n# License\n\nCopyright (c) 2014 by Nick Sutterer \u003capotonick@gmail.com\u003e\n\nUber is released under the [MIT License](http://www.opensource.org/licenses/MIT).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["rubygems","activejob","activerecord","mvc","json-parser","rack","json-serialization","xml-parser","xml-serialization","kaminari"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/439","html_url":"https://ruby.ecosyste.ms/projects/439"}