{"id":415,"name":null,"description":"Modify your ENV","url":"https://github.com/thoughtbot/climate_control","last_synced_at":"2026-05-01T02:00:33.209Z","repository":{"id":5695346,"uuid":"6905846","full_name":"thoughtbot/climate_control","owner":"thoughtbot","description":"Modify your ENV","archived":false,"fork":false,"pushed_at":"2026-04-08T15:23:28.000Z","size":105,"stargazers_count":583,"open_issues_count":1,"forks_count":29,"subscribers_count":37,"default_branch":"main","last_synced_at":"2026-04-27T00:02:54.350Z","etag":null,"topics":["ruby","testing"],"latest_commit_sha":null,"homepage":"https://robots.thoughtbot.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"thoughtbot"}},"created_at":"2012-11-28T16:56:21.000Z","updated_at":"2026-04-23T07:33:30.000Z","dependencies_parsed_at":"2026-04-27T00:00:45.481Z","dependency_job_id":null,"html_url":"https://github.com/thoughtbot/climate_control","commit_stats":{"total_commits":96,"total_committers":25,"mean_commits":3.84,"dds":0.6458333333333333,"last_synced_commit":"8c38cc017a68e6de77c88f8aaee170a357529f41"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtbot/climate_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/sbom","scorecard":{"id":883068,"data":{"date":"2025-08-11","repo":{"name":"github.com/thoughtbot/climate_control","commit":"1d02806816a4f96b2258b907fefdd93101f077b0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"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":"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":"Code-Review","score":6,"reason":"Found 12/18 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-readme.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-readme.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-security.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-security.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-readme.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-security.yml:14","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-readme.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-security.yml:1"],"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 28 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-24T08:57:50.555Z","repository_id":5695346,"created_at":"2025-08-24T08:57:50.556Z","updated_at":"2025-08-24T08:57:50.556Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32401158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"thoughtbot","name":"thoughtbot, inc.","uuid":"6183","kind":"organization","description":"We work with organizations of all sizes to design, develop, and grow their web and mobile products.","email":"hello@thoughtbot.com","website":"https://thoughtbot.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6183?v=4","repositories_count":434,"last_synced_at":"2024-04-14T06:41:37.100Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"thoughtbot"}},"html_url":"https://github.com/thoughtbot","funding_links":["https://github.com/sponsors/thoughtbot"],"total_stars":129983,"followers":556,"following":0,"created_at":"2022-11-02T16:21:36.147Z","updated_at":"2024-04-14T06:43:02.073Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot/repositories"},"packages":[{"id":13605236,"name":"ruby-climate-control","ecosystem":"debian","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:19:17.427Z","latest_release_published_at":"2026-02-11T11:19:17.427Z","latest_release_number":"0.0.3-1","last_synced_at":"2026-03-13T05:08:59.608Z","created_at":"2026-02-11T11:19:17.236Z","updated_at":"2026-03-13T05:08:59.609Z","registry_url":"https://tracker.debian.org/pkg/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":"https://packages.debian.org/buster/ruby-climate-control","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:03.291Z","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-climate-control?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-climate-control/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":13750867,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:11:23.963Z","latest_release_published_at":"2026-02-13T07:11:23.963Z","latest_release_number":"0.0.3-1build1","last_synced_at":"2026-03-13T14:23:42.308Z","created_at":"2026-02-13T07:11:23.796Z","updated_at":"2026-03-13T14:23:42.542Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":5695346,"uuid":"6905846","full_name":"thoughtbot/climate_control","owner":"thoughtbot","description":"Modify your ENV","archived":false,"fork":false,"pushed_at":"2025-12-11T13:26:20.000Z","size":103,"stargazers_count":579,"open_issues_count":0,"forks_count":28,"subscribers_count":37,"default_branch":"main","last_synced_at":"2026-02-06T15:55:22.347Z","etag":null,"topics":["ruby","testing"],"latest_commit_sha":null,"homepage":"https://robots.thoughtbot.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"thoughtbot"}},"created_at":"2012-11-28T16:56:21.000Z","updated_at":"2026-02-05T08:16:58.000Z","dependencies_parsed_at":"2026-01-12T22:01:28.759Z","dependency_job_id":null,"html_url":"https://github.com/thoughtbot/climate_control","commit_stats":{"total_commits":96,"total_committers":25,"mean_commits":3.84,"dds":0.6458333333333333,"last_synced_commit":"8c38cc017a68e6de77c88f8aaee170a357529f41"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtbot/climate_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/sbom","scorecard":{"id":883068,"data":{"date":"2025-08-11","repo":{"name":"github.com/thoughtbot/climate_control","commit":"1d02806816a4f96b2258b907fefdd93101f077b0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"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":"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":"Code-Review","score":6,"reason":"Found 12/18 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-readme.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-readme.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-security.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-security.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-readme.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-security.yml:14","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-readme.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-security.yml:1"],"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 28 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-24T08:57:50.555Z","repository_id":5695346,"created_at":"2025-08-24T08:57:50.556Z","updated_at":"2025-08-24T08:57:50.556Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29228534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T09:43:19.170Z","status":"ssl_error","status_checked_at":"2026-02-08T09:42:55.556Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-02-13T07:11:24.963Z","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-climate-control?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":["https://github.com/sponsors/thoughtbot"],"critical":null,"issue_metadata":{"last_synced_at":"2025-12-13T07:05:48.445Z","issues_count":16,"pull_requests_count":75,"avg_time_to_close_issue":9240264.25,"avg_time_to_close_pull_request":7039875.746478873,"issues_closed_count":16,"pull_requests_closed_count":71,"pull_request_authors_count":30,"issue_authors_count":16,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.9466666666666667,"merged_pull_requests_count":55,"bot_issues_count":0,"bot_pull_requests_count":13,"past_year_issues_count":0,"past_year_pull_requests_count":10,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":3191278.375,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":6,"past_year_merged_pull_requests_count":7,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/issues","maintainers":[{"login":"joshuaclayton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshuaclayton"},{"login":"neilvcarvalho","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/neilvcarvalho"},{"login":"mike-burns","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mike-burns"},{"login":"jferris","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jferris"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-climate-control/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":13804103,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:16:37.340Z","latest_release_published_at":"2026-02-13T18:16:37.340Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-14T02:20:08.077Z","created_at":"2026-02-13T18:16:37.143Z","updated_at":"2026-03-14T02:20:08.078Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:19:28.461Z","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-climate-control?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-climate-control/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":13530094,"name":"ruby-climate-control","ecosystem":"debian","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:28:16.370Z","latest_release_published_at":"2026-02-10T23:28:16.370Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-14T06:21:45.989Z","created_at":"2026-02-10T23:28:16.188Z","updated_at":"2026-03-14T06:21:45.990Z","registry_url":"https://tracker.debian.org/pkg/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":"https://packages.debian.org/bullseye/ruby-climate-control","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:26:32.687Z","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-climate-control?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-climate-control/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":13778588,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:14:28.272Z","latest_release_published_at":"2026-02-13T13:14:28.272Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-13T13:38:03.206Z","created_at":"2026-02-13T13:14:28.085Z","updated_at":"2026-03-13T13:38:03.206Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:14:28.956Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-climate-control?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-climate-control/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":13566217,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:36:58.374Z","latest_release_published_at":"2026-02-11T06:36:58.374Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-11T14:10:57.702Z","created_at":"2026-02-11T06:36:58.173Z","updated_at":"2026-03-11T14:10:57.703Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:56:13.760Z","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-climate-control?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-climate-control/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":13712136,"name":"ruby-climate-control","ecosystem":"debian","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:27:09.028Z","latest_release_published_at":"2026-02-12T23:27:09.028Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-13T03:29:32.473Z","created_at":"2026-02-12T23:27:07.982Z","updated_at":"2026-03-13T03:29:32.473Z","registry_url":"https://tracker.debian.org/pkg/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":"https://packages.debian.org/bookworm/ruby-climate-control","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:27:09.781Z","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-climate-control?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-climate-control/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":177685,"name":"climate_control","ecosystem":"rubygems","description":"Modify your ENV","homepage":"https://github.com/thoughtbot/climate_control","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":[],"namespace":null,"versions_count":10,"first_release_published_at":"2012-11-28T18:18:51.449Z","latest_release_published_at":"2022-07-15T10:47:14.775Z","latest_release_number":"1.2.0","last_synced_at":"2026-04-29T20:01:09.545Z","created_at":"2022-04-05T19:25:35.238Z","updated_at":"2026-04-29T20:01:35.212Z","registry_url":"https://rubygems.org/gems/climate_control","install_command":"gem install climate_control -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/climate_control/","metadata":{"funding":null},"repo_metadata":{"id":5695346,"uuid":"6905846","full_name":"thoughtbot/climate_control","owner":"thoughtbot","description":"Modify your ENV","archived":false,"fork":false,"pushed_at":"2026-04-08T15:23:28.000Z","size":105,"stargazers_count":583,"open_issues_count":1,"forks_count":29,"subscribers_count":37,"default_branch":"main","last_synced_at":"2026-04-27T00:02:54.350Z","etag":null,"topics":["ruby","testing"],"latest_commit_sha":null,"homepage":"https://robots.thoughtbot.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"thoughtbot"}},"created_at":"2012-11-28T16:56:21.000Z","updated_at":"2026-04-23T07:33:30.000Z","dependencies_parsed_at":"2026-04-27T00:00:45.481Z","dependency_job_id":null,"html_url":"https://github.com/thoughtbot/climate_control","commit_stats":{"total_commits":96,"total_committers":25,"mean_commits":3.84,"dds":0.6458333333333333,"last_synced_commit":"8c38cc017a68e6de77c88f8aaee170a357529f41"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtbot/climate_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/sbom","scorecard":{"id":883068,"data":{"date":"2025-08-11","repo":{"name":"github.com/thoughtbot/climate_control","commit":"1d02806816a4f96b2258b907fefdd93101f077b0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"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":"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":"Code-Review","score":6,"reason":"Found 12/18 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-readme.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-readme.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-security.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-security.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-readme.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-security.yml:14","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-readme.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-security.yml:1"],"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 28 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-24T08:57:50.555Z","repository_id":5695346,"created_at":"2025-08-24T08:57:50.556Z","updated_at":"2025-08-24T08:57:50.556Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32401158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"thoughtbot","name":"thoughtbot, inc.","uuid":"6183","kind":"organization","description":"We work with organizations of all sizes to design, develop, and grow their web and mobile products.","email":"hello@thoughtbot.com","website":"https://thoughtbot.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6183?v=4","repositories_count":434,"last_synced_at":"2024-04-14T06:41:37.100Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"thoughtbot"}},"html_url":"https://github.com/thoughtbot","funding_links":["https://github.com/sponsors/thoughtbot"],"total_stars":129983,"followers":556,"following":0,"created_at":"2022-11-02T16:21:36.147Z","updated_at":"2024-04-14T06:43:02.073Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-04-29T20:01:35.212Z","dependent_packages_count":139,"downloads":134329534,"downloads_period":"total","dependent_repos_count":38827,"rankings":{"downloads":0.17116223057280805,"dependent_repos_count":0.16614444531171596,"dependent_packages_count":0.25423445322866606,"stargazers_count":2.4771133238924636,"forks_count":5.279267626364559,"docker_downloads_count":1.1055853525272912,"average":1.5755845719829173},"purl":"pkg:gem/climate_control","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/climate_control","docker_dependents_count":164,"docker_downloads_count":85338311,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/climate_control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/climate_control/dependencies","status":null,"funding_links":["https://github.com/sponsors/thoughtbot"],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-28T22:25:50.075Z","issues_count":16,"pull_requests_count":77,"avg_time_to_close_issue":9240264.25,"avg_time_to_close_pull_request":6942107.75,"issues_closed_count":16,"pull_requests_closed_count":72,"pull_request_authors_count":31,"issue_authors_count":16,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.922077922077922,"merged_pull_requests_count":56,"bot_issues_count":0,"bot_pull_requests_count":13,"past_year_issues_count":0,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2836756.3333333335,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":6,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/issues","maintainers":[{"login":"joshuaclayton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshuaclayton"},{"login":"neilvcarvalho","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/neilvcarvalho"},{"login":"mike-burns","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mike-burns"},{"login":"jferris","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jferris"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/climate_control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/climate_control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/climate_control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/climate_control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/climate_control/codemeta","maintainers":[{"uuid":"544","login":"thoughtbot","name":null,"email":null,"url":null,"packages_count":65,"html_url":"https://rubygems.org/profiles/thoughtbot","role":null,"created_at":"2022-11-07T14:23:49.351Z","updated_at":"2022-11-07T14:23:49.351Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/thoughtbot/packages"},{"uuid":"154","login":"joshuaclayton","name":null,"email":null,"url":null,"packages_count":16,"html_url":"https://rubygems.org/profiles/joshuaclayton","role":null,"created_at":"2022-11-07T14:23:49.338Z","updated_at":"2022-11-07T14:23:49.338Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/joshuaclayton/packages"},{"uuid":"148114","login":"dorianmariecom","name":null,"email":null,"url":null,"packages_count":72,"html_url":"https://rubygems.org/profiles/dorianmariecom","role":null,"created_at":"2022-11-07T14:23:49.328Z","updated_at":"2022-11-07T14:23:49.328Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/dorianmariecom/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205570,"maintainers_count":68482,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":13466475,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T16:18:12.503Z","latest_release_published_at":"2026-02-09T16:18:12.503Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-09T17:03:40.882Z","created_at":"2026-02-09T16:18:11.123Z","updated_at":"2026-03-09T17:32:34.477Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-climate-control?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-climate-control/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":12202339,"name":"climate_control","ecosystem":"rubygems","description":"Modify your ENV","homepage":"https://github.com/thoughtbot/climate_control","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":[],"namespace":null,"versions_count":10,"first_release_published_at":"2012-11-28T18:18:51.449Z","latest_release_published_at":"2022-07-15T10:47:14.775Z","latest_release_number":"1.2.0","last_synced_at":"2026-04-30T18:00:58.756Z","created_at":"2025-10-07T02:06:06.488Z","updated_at":"2026-04-30T18:03:00.155Z","registry_url":"https://gem.coop/gems/climate_control","install_command":"gem install climate_control -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/climate_control/","metadata":{"funding":null},"repo_metadata":{"id":5695346,"uuid":"6905846","full_name":"thoughtbot/climate_control","owner":"thoughtbot","description":"Modify your ENV","archived":false,"fork":false,"pushed_at":"2026-04-08T15:23:28.000Z","size":105,"stargazers_count":583,"open_issues_count":1,"forks_count":29,"subscribers_count":37,"default_branch":"main","last_synced_at":"2026-04-27T00:02:54.350Z","etag":null,"topics":["ruby","testing"],"latest_commit_sha":null,"homepage":"https://robots.thoughtbot.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"thoughtbot"}},"created_at":"2012-11-28T16:56:21.000Z","updated_at":"2026-04-23T07:33:30.000Z","dependencies_parsed_at":"2026-04-27T00:00:45.481Z","dependency_job_id":null,"html_url":"https://github.com/thoughtbot/climate_control","commit_stats":{"total_commits":96,"total_committers":25,"mean_commits":3.84,"dds":0.6458333333333333,"last_synced_commit":"8c38cc017a68e6de77c88f8aaee170a357529f41"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtbot/climate_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/sbom","scorecard":{"id":883068,"data":{"date":"2025-08-11","repo":{"name":"github.com/thoughtbot/climate_control","commit":"1d02806816a4f96b2258b907fefdd93101f077b0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"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":"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":"Code-Review","score":6,"reason":"Found 12/18 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-readme.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-readme.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-security.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-security.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-readme.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-security.yml:14","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-readme.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-security.yml:1"],"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 28 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-24T08:57:50.555Z","repository_id":5695346,"created_at":"2025-08-24T08:57:50.556Z","updated_at":"2025-08-24T08:57:50.556Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32401158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"thoughtbot","name":"thoughtbot, inc.","uuid":"6183","kind":"organization","description":"We work with organizations of all sizes to design, develop, and grow their web and mobile products.","email":"hello@thoughtbot.com","website":"https://thoughtbot.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6183?v=4","repositories_count":434,"last_synced_at":"2024-04-14T06:41:37.100Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"thoughtbot"}},"html_url":"https://github.com/thoughtbot","funding_links":["https://github.com/sponsors/thoughtbot"],"total_stars":129983,"followers":556,"following":0,"created_at":"2022-11-02T16:21:36.147Z","updated_at":"2024-04-14T06:43:02.073Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot/repositories"},"tags":[{"name":"v1.2.0","sha":"07798ff9ea6a10a04524a30eae9d1a048eb51062","kind":"tag","published_at":"2022-07-15T10:44:36.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.2.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"4a67c2d05fccd7536a5cf93db9d95ebadb744d5e","kind":"tag","published_at":"2022-05-30T11:37:19.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.1.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"1b2a5947bd3b6b1b7a67a226f476a7305d94bbdb","kind":"tag","published_at":"2022-05-26T01:55:02.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.1.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"4cf92235b66170504e05511205fd5c0d8e8a0a01","kind":"tag","published_at":"2021-05-27T01:43:35.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.0.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"da48ab92f50452014af989a1e6de4cddfa814a75","kind":"tag","published_at":"2021-03-07T05:01:03.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.0.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.0/manifests"},{"name":"v0.1.0","sha":"e392d40af7c937aef8352b7b25c6e9afd27d0632","kind":"tag","published_at":"2017-01-07T10:56:20.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.1.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.1.0/manifests"},{"name":"v0.0.4","sha":"48e61ba0aa8a2bff76644a0e1f7da70786bbd800","kind":"tag","published_at":"2017-01-06T10:43:59.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.4","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"f97bb8842a2f0fb50c5e59bd2895fdfc71734ef1","kind":"tag","published_at":"2012-11-30T15:31:45.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.3","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"893c6148b55b50b09155413d7d629622b3ec878d","kind":"tag","published_at":"2012-11-30T15:23:57.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.2","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"f0706d2f114af887e8a48b1007c4174797651b7f","kind":"tag","published_at":"2012-11-28T18:17:57.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-30T18:03:00.155Z","dependent_packages_count":0,"downloads":134392224,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.18599722085547907,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.5547475249933765,"average":0.1851861864622139},"purl":"pkg:gem/climate_control?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/climate_control","docker_dependents_count":164,"docker_downloads_count":85338311,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/climate_control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/climate_control/dependencies","status":null,"funding_links":["https://github.com/sponsors/thoughtbot"],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-28T22:25:50.075Z","issues_count":16,"pull_requests_count":77,"avg_time_to_close_issue":9240264.25,"avg_time_to_close_pull_request":6942107.75,"issues_closed_count":16,"pull_requests_closed_count":72,"pull_request_authors_count":31,"issue_authors_count":16,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.922077922077922,"merged_pull_requests_count":56,"bot_issues_count":0,"bot_pull_requests_count":13,"past_year_issues_count":0,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2836756.3333333335,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":6,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/issues","maintainers":[{"login":"joshuaclayton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshuaclayton"},{"login":"neilvcarvalho","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/neilvcarvalho"},{"login":"mike-burns","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mike-burns"},{"login":"jferris","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jferris"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/climate_control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/climate_control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/climate_control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/climate_control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/climate_control/codemeta","maintainers":[{"uuid":"544","login":"thoughtbot","name":null,"email":null,"url":null,"packages_count":65,"html_url":"https://gem.coop/profiles/thoughtbot","role":null,"created_at":"2025-10-07T14:21:38.430Z","updated_at":"2025-10-07T14:21:38.430Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/thoughtbot/packages"},{"uuid":"154","login":"joshuaclayton","name":null,"email":null,"url":null,"packages_count":16,"html_url":"https://gem.coop/profiles/joshuaclayton","role":null,"created_at":"2025-10-07T14:21:38.349Z","updated_at":"2025-10-07T14:21:38.349Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/joshuaclayton/packages"},{"uuid":"148114","login":"dorianmariecom","name":null,"email":null,"url":null,"packages_count":72,"html_url":"https://gem.coop/profiles/dorianmariecom","role":null,"created_at":"2025-10-07T14:21:38.502Z","updated_at":"2025-10-07T14:21:38.502Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/dorianmariecom/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190423,"maintainers_count":67492,"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":8616113,"name":"github.com/thoughtbot/climate_control","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":[],"namespace":null,"versions_count":10,"first_release_published_at":"2012-11-28T18:17:49.000Z","latest_release_published_at":"2022-07-15T10:43:32.000Z","latest_release_number":"v1.2.0","last_synced_at":"2026-04-27T00:01:10.250Z","created_at":"2023-12-03T01:58:04.825Z","updated_at":"2026-04-27T00:01:10.250Z","registry_url":"https://pkg.go.dev/github.com/thoughtbot/climate_control","install_command":"go get github.com/thoughtbot/climate_control","documentation_url":"https://pkg.go.dev/github.com/thoughtbot/climate_control#section-documentation","metadata":{},"repo_metadata":{"id":5695346,"uuid":"6905846","full_name":"thoughtbot/climate_control","owner":"thoughtbot","description":"Modify your ENV","archived":false,"fork":false,"pushed_at":"2025-10-07T14:28:30.000Z","size":101,"stargazers_count":572,"open_issues_count":0,"forks_count":28,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-10-19T09:31:01.163Z","etag":null,"topics":["ruby","testing"],"latest_commit_sha":null,"homepage":"https://robots.thoughtbot.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"thoughtbot"}},"created_at":"2012-11-28T16:56:21.000Z","updated_at":"2025-10-17T12:25:32.000Z","dependencies_parsed_at":"2024-03-15T00:30:33.196Z","dependency_job_id":"4407d4ff-6b12-4453-afe7-a17665bf526a","html_url":"https://github.com/thoughtbot/climate_control","commit_stats":{"total_commits":96,"total_committers":25,"mean_commits":3.84,"dds":0.6458333333333333,"last_synced_commit":"8c38cc017a68e6de77c88f8aaee170a357529f41"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/thoughtbot/climate_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/sbom","scorecard":{"id":883068,"data":{"date":"2025-08-11","repo":{"name":"github.com/thoughtbot/climate_control","commit":"1d02806816a4f96b2258b907fefdd93101f077b0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"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":"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":"Code-Review","score":6,"reason":"Found 12/18 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"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/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-readme.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-readme.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dynamic-security.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thoughtbot/climate_control/dynamic-security.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-readme.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/dynamic-security.yml:14","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-readme.yml:1","Warn: no topLevel permission defined: .github/workflows/dynamic-security.yml:1"],"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":"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/thoughtbot/climate_control/releases/67885410"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 28 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-24T08:57:50.555Z","repository_id":5695346,"created_at":"2025-08-24T08:57:50.556Z","updated_at":"2025-08-24T08:57:50.556Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280006562,"owners_count":26257628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"thoughtbot","name":"thoughtbot, inc.","uuid":"6183","kind":"organization","description":"We work with organizations of all sizes to design, develop, and grow their web and mobile products.","email":"hello@thoughtbot.com","website":"https://thoughtbot.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6183?v=4","repositories_count":434,"last_synced_at":"2024-04-14T06:41:37.100Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"thoughtbot"}},"html_url":"https://github.com/thoughtbot","funding_links":["https://github.com/sponsors/thoughtbot"],"total_stars":129983,"followers":556,"following":0,"created_at":"2022-11-02T16:21:36.147Z","updated_at":"2024-04-14T06:43:02.073Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot/repositories"},"tags":[{"name":"v1.2.0","sha":"07798ff9ea6a10a04524a30eae9d1a048eb51062","kind":"tag","published_at":"2022-07-15T10:44:36.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.2.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"4a67c2d05fccd7536a5cf93db9d95ebadb744d5e","kind":"tag","published_at":"2022-05-30T11:37:19.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.1.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"1b2a5947bd3b6b1b7a67a226f476a7305d94bbdb","kind":"tag","published_at":"2022-05-26T01:55:02.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.1.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"4cf92235b66170504e05511205fd5c0d8e8a0a01","kind":"tag","published_at":"2021-05-27T01:43:35.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.0.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"da48ab92f50452014af989a1e6de4cddfa814a75","kind":"tag","published_at":"2021-03-07T05:01:03.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v1.0.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v1.0.0/manifests"},{"name":"v0.1.0","sha":"e392d40af7c937aef8352b7b25c6e9afd27d0632","kind":"tag","published_at":"2017-01-07T10:56:20.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.1.0","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.1.0/manifests"},{"name":"v0.0.4","sha":"48e61ba0aa8a2bff76644a0e1f7da70786bbd800","kind":"tag","published_at":"2017-01-06T10:43:59.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.4","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"f97bb8842a2f0fb50c5e59bd2895fdfc71734ef1","kind":"tag","published_at":"2012-11-30T15:31:45.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.3","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"893c6148b55b50b09155413d7d629622b3ec878d","kind":"tag","published_at":"2012-11-30T15:23:57.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.2","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"f0706d2f114af887e8a48b1007c4174797651b7f","kind":"tag","published_at":"2012-11-28T18:17:57.000Z","download_url":"https://codeload.github.com/thoughtbot/climate_control/tar.gz/v0.0.1","html_url":"https://github.com/thoughtbot/climate_control/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/thoughtbot/climate_control@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2025-10-20T22:53:36.481Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.77902998550931,"dependent_packages_count":9.55954712080186,"stargazers_count":2.6446012654802873,"forks_count":4.500632339294626,"docker_downloads_count":null,"average":6.870952677771521},"purl":"pkg:golang/github.com/thoughtbot/climate_control","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/thoughtbot/climate_control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/thoughtbot/climate_control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/thoughtbot/climate_control/dependencies","status":null,"funding_links":["https://github.com/sponsors/thoughtbot"],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-08T10:33:37.273Z","issues_count":16,"pull_requests_count":74,"avg_time_to_close_issue":9240264.25,"avg_time_to_close_pull_request":7118908.114285714,"issues_closed_count":16,"pull_requests_closed_count":70,"pull_request_authors_count":30,"issue_authors_count":16,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.9594594594594594,"merged_pull_requests_count":54,"bot_issues_count":0,"bot_pull_requests_count":12,"past_year_issues_count":0,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":3431802.4285714286,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.4444444444444444,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":5,"past_year_merged_pull_requests_count":6,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/issues","maintainers":[{"login":"joshuaclayton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshuaclayton"},{"login":"neilvcarvalho","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/neilvcarvalho"},{"login":"mike-burns","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mike-burns"},{"login":"jferris","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jferris"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fthoughtbot%2Fclimate_control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fthoughtbot%2Fclimate_control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fthoughtbot%2Fclimate_control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fthoughtbot%2Fclimate_control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fthoughtbot%2Fclimate_control/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2119757,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":13668715,"name":"ruby-climate-control","ecosystem":"debian","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:18:40.420Z","latest_release_published_at":"2026-02-12T12:18:40.420Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-14T18:06:20.316Z","created_at":"2026-02-12T12:18:40.171Z","updated_at":"2026-03-14T18:06:20.317Z","registry_url":"https://tracker.debian.org/pkg/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":"https://packages.debian.org/trixie/ruby-climate-control","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:18:41.095Z","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-climate-control?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-climate-control/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":13406477,"name":"ruby-climate-control","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/thoughtbot/climate_control","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/thoughtbot/climate_control","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T15:02:11.127Z","latest_release_published_at":"2026-02-06T15:02:11.127Z","latest_release_number":"0.0.3-1.1","last_synced_at":"2026-03-06T16:46:57.793Z","created_at":"2026-02-06T15:02:10.101Z","updated_at":"2026-03-06T16:46:57.793Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-climate-control","install_command":"apt-get install ruby-climate-control","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-climate-control","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, rake, ruby-activesupport (\u003e= 3.0), ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{},"purl":"pkg:deb/ubuntu/ruby-climate-control?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-climate-control","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-climate-control","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-climate-control/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-climate-control/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-climate-control/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-climate-control/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-climate-control/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-climate-control/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"}}],"commits":{"id":19040,"full_name":"thoughtbot/climate_control","default_branch":"main","total_commits":104,"total_committers":27,"total_bot_commits":7,"total_bot_committers":2,"mean_commits":3.8518518518518516,"dds":0.5288461538461539,"past_year_total_commits":8,"past_year_total_committers":5,"past_year_total_bot_commits":3,"past_year_total_bot_committers":2,"past_year_mean_commits":1.6,"past_year_dds":0.75,"last_synced_at":"2026-04-29T20:03:11.386Z","last_synced_commit":"7a987cabda6890a08a5615693f019c30c0666419","created_at":"2023-03-07T11:39:40.545Z","updated_at":"2026-04-29T20:02:29.395Z","committers":[{"name":"Joshua Clayton","email":"jclayton@thoughtbot.com","login":"joshuaclayton","count":49},{"name":"Dorian Marié","email":"dorian@thoughtbot.com","login":null,"count":14},{"name":"github-actions[bot]","email":"github-actions[bot]","login":"github-actions[bot]","count":5},{"name":"Dorian Marié","email":"dorian@dorianmarie.com","login":"dorianmariecom","count":3},{"name":"Matheus Richard","email":"matheusrichardt@gmail.com","login":"MatheusRich","count":3},{"name":"Tamás Michelberger","email":"tomi.michel@gmail.com","login":"tmichel","count":3},{"name":"Stefanni Brasil","email":"stefannibrasil@gmail.com","login":null,"count":2},{"name":"Brian Penguin","email":"btenggren20@gmail.com","login":"brimatteng","count":2},{"name":"Geoff Harcourt","email":"geoff.harcourt@gmail.com","login":"geoffharcourt","count":2},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":2},{"name":"Yutaka Kamei","email":"kamei@yykamei.me","login":"yykamei","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Adarsh Pandit","email":"adarsh@thoughtbot.com","login":null,"count":1},{"name":"Bruno Casali","email":"brunoocasali@gmail.com","login":"brunoocasali","count":1},{"name":"Filipe Brandenburger","email":"filbranden@gmail.com","login":"filbranden","count":1},{"name":"Ian Hall","email":"ianh.99@gmail.com","login":"ianhall","count":1},{"name":"Joe Ferris","email":"jferris@thoughtbot.com","login":"jferris","count":1},{"name":"Ken Dreyer","email":"ktdreyer@ktdreyer.com","login":"ktdreyer","count":1},{"name":"Mike Burns","email":"mike@mike-burns.com","login":"mike-burns","count":1},{"name":"Neil Carvalho","email":"me@neil.pro","login":"neilvcarvalho","count":1},{"name":"Nick Schonning","email":"nschonni@gmail.com","login":"nschonni","count":1},{"name":"Patrik Ragnarsson","email":"patrik@starkast.net","login":"dentarg","count":1},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":1},{"name":"Stefanni Brasil","email":"stefannibrasil@proton.me","login":"stefannibrasil","count":1},{"name":"Thomas Orozco","email":"thomas@orozco.fr","login":"krallin","count":1},{"name":"Yudai Takada","email":"13041216+ydah","login":"ydah","count":1},{"name":"balexand","email":"balexand@gmail.com","login":"balexand","count":1}],"past_year_committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Yutaka Kamei","email":"kamei@yykamei.me","login":"yykamei","count":2},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":2},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":1},{"name":"Matheus Richard","email":"matheusrichardt@gmail.com","login":"MatheusRich","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-01T00:00:07.988Z","repositories_count":6224015,"commits_count":900110213,"contributors_count":34903473,"owners_count":1147647,"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":"thoughtbot/climate_control","html_url":"https://github.com/thoughtbot/climate_control","last_synced_at":"2026-04-28T22:25:50.075Z","status":"error","issues_count":16,"pull_requests_count":77,"avg_time_to_close_issue":9240264.25,"avg_time_to_close_pull_request":6942107.75,"issues_closed_count":16,"pull_requests_closed_count":72,"pull_request_authors_count":31,"issue_authors_count":16,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.922077922077922,"merged_pull_requests_count":56,"bot_issues_count":0,"bot_pull_requests_count":13,"past_year_issues_count":0,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2836756.3333333335,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":6,"past_year_merged_pull_requests_count":8,"created_at":"2023-05-12T09:04:55.397Z","updated_at":"2026-04-28T22:25:50.075Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fclimate_control/issues","issue_labels_count":{"bug":1},"pull_request_labels_count":{"github_actions":2,"dependencies":2,"enhancement":1},"issue_author_associations_count":{"NONE":13,"CONTRIBUTOR":2,"COLLABORATOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":55,"NONE":12,"COLLABORATOR":6,"MEMBER":4},"issue_authors":{"nikita-v":1,"dup2":1,"sapslaj":1,"collegeimprovements":1,"dentarg":1,"sofianegargouri":1,"dorianmariefr":1,"lightning02":1,"emaiax":1,"mcmire":1,"psmod2":1,"kfernald":1,"joshuaclayton":1,"felixonmars":1,"dylanpiera":1,"kleinjm":1},"pull_request_authors":{"github-actions[bot]":11,"stefannibrasil":10,"dorianmariecom":8,"dorianmariefr":6,"joshuaclayton":6,"yykamei":3,"ktdreyer":3,"brimatteng":2,"geoffharcourt":2,"dependabot[bot]":2,"balexand":2,"MatheusRich":2,"neilvcarvalho":2,"yuri-zubov":1,"bkuhlmann":1,"tmichel":1,"ydah":1,"adarsh":1,"krallin":1,"brunoocasali":1,"filbranden":1,"mike-burns":1,"olleolleolle":1,"ianhall":1,"JoshCheek":1,"maurogeorge":1,"nschonni":1,"anatol":1,"petergoldstein":1,"jferris":1,"dentarg":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-29T00:00:10.439Z","repositories_count":14440670,"issues_count":34190145,"pull_requests_count":112287575,"authors_count":11248207,"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":{"dependencies":2,"github_actions":2},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":9,"NONE":3},"past_year_issue_authors":{},"past_year_pull_request_authors":{"github-actions[bot]":4,"yykamei":3,"dependabot[bot]":2,"MatheusRich":1,"olleolleolle":1,"yuri-zubov":1},"maintainers":[{"login":"joshuaclayton","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshuaclayton"},{"login":"neilvcarvalho","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/neilvcarvalho"},{"login":"mike-burns","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mike-burns"},{"login":"jferris","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jferris"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":14,"ForkEvent":5,"WatchEvent":28,"IssueCommentEvent":3,"PushEvent":4,"CreateEvent":2},"last_year":{"PullRequestEvent":14,"ForkEvent":5,"WatchEvent":16,"IssueCommentEvent":3,"PushEvent":4,"CreateEvent":2}},"keywords":["ruby","testing"],"dependencies":[{"ecosystem":"rubygems","filepath":"climate_control.gemspec","sha":null,"kind":"manifest","created_at":"2022-07-12T13:19:44.702Z","updated_at":"2022-07-12T13:19:44.702Z","repository_link":"https://github.com/thoughtbot/climate_control/blob/main/climate_control.gemspec","dependencies":[{"id":157314204,"package_name":"rspec","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":157314205,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":157314206,"package_name":"simplecov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":157314207,"package_name":"standard","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2024-03-15T00:30:33.173Z","updated_at":"2024-03-15T00:30:33.173Z","repository_link":"https://github.com/thoughtbot/climate_control/blob/main/.github/workflows/ci.yml","dependencies":[{"id":16823237448,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16823237449,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2024-03-15T00:30:33.181Z","updated_at":"2024-03-15T00:30:33.181Z","repository_link":"https://github.com/thoughtbot/climate_control/blob/main/Gemfile","dependencies":[]},{"ecosystem":"actions","filepath":".github/workflows/dynamic-security.yml","sha":null,"kind":"manifest","created_at":"2026-01-12T22:01:28.683Z","updated_at":"2026-01-12T22:01:28.683Z","repository_link":"https://github.com/thoughtbot/climate_control/blob/main/.github/workflows/dynamic-security.yml","dependencies":[]},{"ecosystem":"actions","filepath":".github/workflows/dynamic-readme.yml","sha":null,"kind":"manifest","created_at":"2026-01-12T22:01:28.640Z","updated_at":"2026-01-12T22:01:28.640Z","repository_link":"https://github.com/thoughtbot/climate_control/blob/main/.github/workflows/dynamic-readme.yml","dependencies":[]}],"score":29.566744309543783,"created_at":"2024-12-15T21:38:07.994Z","updated_at":"2026-05-01T02:00:33.219Z","avatar_url":"https://github.com/thoughtbot.png","language":"Ruby","monthly_downloads":0,"readme":"# Climate Control\n\n![GitHub Actions CI](https://github.com/thoughtbot/climate_control/actions/workflows/ci.yml/badge.svg)\n\nEasily manage your environment.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n    gem 'climate_control'\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install climate_control\n\n## Usage\n\nClimate Control can be used to temporarily assign environment variables\nwithin a block:\n\n```ruby\nClimateControl.modify CONFIRMATION_INSTRUCTIONS_BCC: 'confirmation_bcc@example.com' do\n  sign_up_as 'john@example.com'\n\n  confirm_account_for_email 'john@example.com'\n\n  expect(current_email).to bcc_to('confirmation_bcc@example.com')\nend\n```\n\nTo modify multiple environment variables:\n\n```ruby\nClimateControl.modify CONFIRMATION_INSTRUCTIONS_BCC: 'confirmation_bcc@example.com',\n                      MAIL_FROM: 'us@example.com' do\n  sign_up_as 'john@example.com'\n\n  confirm_account_for_email 'john@example.com'\n\n  expect(current_email).to bcc_to('confirmation_bcc@example.com')\n  expect(current_email).to be_from('us@example.com')\nend\n```\n\nTo temporarily unset an environment variable, pass `nil` as the value:\n\n```ruby\nClimateControl.modify API_KEY: nil do\n  # ENV[\"API_KEY\"] will be nil within this block\n  # It will be restored to its original value (or remain unset if it was never set)\n  # after the block ends\nend\n```\n\nTo use with RSpec, you could define this in your spec:\n\n```ruby\ndef with_modified_env(options = {}, \u0026block)\n  ClimateControl.modify(options, \u0026block)\nend\n```\n\nThis would allow for more straightforward way to modify the environment:\n\n```ruby\nrequire 'spec_helper'\n\ndescribe Thing, 'name' do\n  it 'appends ADDITIONAL_NAME' do\n    with_modified_env ADDITIONAL_NAME: 'bar' do\n      expect(Thing.new.name).to eq('John Doe Bar')\n    end\n  end\n\n  def with_modified_env(options, \u0026block)\n    ClimateControl.modify(options, \u0026block)\n  end\nend\n```\n\nTo modify the environment for an entire set of tests in RSpec, use an `around`\nblock:\n\n```ruby\ndescribe Thing, 'name' do\n  # ... tests\n\n  around do |example|\n    ClimateControl.modify FOO: 'bar' do\n      example.run\n    end\n  end\nend\n```\n\nEnvironment variables assigned within the block will be preserved;\nessentially, the code should behave exactly the same with and without the\nblock, except for the overrides. Transparency is crucial because the code\nexecuted within the block is not for `ClimateControl` to manage or modify. See\nthe tests for more detail about the specific behaviors.\n\n## Why Use Climate Control?\n\nBy following guidelines regarding environment variables outlined by the\n[twelve-factor app](http://12factor.net/config), testing code in an isolated\nmanner becomes more difficult:\n\n* avoiding modifications and testing values, we introduce mystery guests\n* making modifications and testing values, we introduce risk as environment\n  variables represent global state\n\nClimate Control modifies environment variables only within the context of the\nblock, ensuring values are managed properly and consistently.\n\n## Thread-safety\n\nWhen using threads, for instance when running tests concurrently in the same\nprocess, you may need to wrap your code inside `ClimateControl.modify` blocks,\ne.g.:\n\n```ruby\nfirst_thread = Thread.new do\n  ClimateControl.modify(SECRET: \"1\") do\n    p ENV[\"SECRET\"] # =\u003e \"1\"\n    sleep 2\n    p ENV[\"SECRET\"] # =\u003e \"1\"\n  end\nend\n\nsecond_thread = Thread.new do\n  ClimateControl.modify({}) do\n    sleep 1\n    p ENV[\"SECRET\"] # =\u003e nil\n    sleep 1\n    p ENV[\"SECRET\"] # =\u003e nil\n  end\nend\n\nfirst_thread.join\nsecond_thread.join\n```\n\n\u003e The modification wraps ENV in a mutex. If there's contention (the env being used - including potentially mutating values), it blocks until the value is freed (we shift out of the Ruby block).\n\u003e\n\u003e \u003ccite\u003e\u003ca href=\"https://github.com/thoughtbot/climate_control/issues/32#issuecomment-800713686\"\u003eJosh Clayton\u003c/a\u003e\u003c/cite\u003e\n\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\nThis project uses [StandardRB](https://github.com/testdouble/standard) to ensure formatting.\n\n## License\n\nclimate_control is copyright © 2012 Joshua Clayton and thoughtbot, inc. It is free software and may be redistributed under the terms specified in the [LICENSE](https://github.com/thoughtbot/climate_control/blob/main/LICENSE) file.\n\n\n\u003c!-- START /templates/footer.md --\u003e\n## About thoughtbot\n\n![thoughtbot](https://thoughtbot.com/thoughtbot-logo-for-readmes.svg)\n\nThis repo is maintained and funded by thoughtbot, inc.\nThe names and logos for thoughtbot are trademarks of thoughtbot, inc.\n\nWe love open source software!\nSee [our other projects][community].\nWe are [available for hire][hire].\n\n[community]: https://thoughtbot.com/community?utm_source=github\n[hire]: https://thoughtbot.com/hire-us?utm_source=github\n\n\u003c!-- END /templates/footer.md --\u003e\n","funding_links":["https://github.com/sponsors/thoughtbot"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["rubygems","rspec","activerecord","activejob","mvc","factories","factory-bot","factory-girl","fixtures","thoughtbot"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/415","html_url":"https://ruby.ecosyste.ms/projects/415"}