{"id":464,"name":null,"description":"Generates attr_accessors that encrypt and decrypt attributes","url":"https://github.com/attr-encrypted/attr_encrypted","last_synced_at":"2026-05-01T02:30:15.871Z","repository":{"id":477766,"uuid":"103175","full_name":"attr-encrypted/attr_encrypted","owner":"attr-encrypted","description":"Generates attr_accessors that encrypt and decrypt attributes","archived":false,"fork":false,"pushed_at":"2025-10-12T03:08:39.000Z","size":424,"stargazers_count":2017,"open_issues_count":84,"forks_count":420,"subscribers_count":38,"default_branch":"master","last_synced_at":"2026-04-19T19:11:54.016Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attr-encrypted.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2009-01-08T08:08:20.000Z","updated_at":"2026-04-15T10:15:39.000Z","dependencies_parsed_at":"2024-01-27T01:45:32.949Z","dependency_job_id":"19321165-f0c4-4af1-98b7-0b15e388a5e8","html_url":"https://github.com/attr-encrypted/attr_encrypted","commit_stats":{"total_commits":295,"total_committers":43,"mean_commits":"6.8604651162790695","dds":0.6915254237288135,"last_synced_commit":"18ef8b65c951751497fca2aacb25a814590a5758"},"previous_names":["shuber/attr_encrypted"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/attr-encrypted/attr_encrypted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/sbom","scorecard":{"id":215780,"data":{"date":"2025-08-11","repo":{"name":"github.com/attr-encrypted/attr_encrypted","commit":"6d8928b68453f168a6c0d08dddf61ad8c0f6434a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":6,"reason":"Found 13/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/CI.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"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:46: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/CI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is required - but no codeowners file found in repo","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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-17T01:37:29.745Z","repository_id":477766,"created_at":"2025-08-17T01:37:29.745Z","updated_at":"2025-08-17T01:37:29.745Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32022561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":{"login":"attr-encrypted","name":"attr-encrypted","uuid":"5475200","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/5475200?v=4","repositories_count":2,"last_synced_at":"2024-03-25T19:31:33.134Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/attr-encrypted","funding_links":[],"total_stars":2317,"followers":3,"following":0,"created_at":"2022-11-02T16:17:13.717Z","updated_at":"2024-03-25T19:31:33.148Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted/repositories"},"packages":[{"id":13750761,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"http://github.com/attr-encrypted/attr_encrypted","licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:10:01.012Z","latest_release_published_at":"2026-02-13T07:10:01.012Z","latest_release_number":"3.1.0-2","last_synced_at":"2026-03-13T13:27:22.332Z","created_at":"2026-02-13T07:10:00.855Z","updated_at":"2026-03-13T13:27:22.517Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.3.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 11~), gem2deb, ruby-encryptor (\u003e= 3.0.0~), ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":477766,"uuid":"103175","full_name":"attr-encrypted/attr_encrypted","owner":"attr-encrypted","description":"Generates attr_accessors that encrypt and decrypt attributes","archived":false,"fork":false,"pushed_at":"2025-10-12T03:08:39.000Z","size":424,"stargazers_count":2020,"open_issues_count":84,"forks_count":423,"subscribers_count":38,"default_branch":"master","last_synced_at":"2026-02-10T14:53:20.432Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attr-encrypted.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2009-01-08T08:08:20.000Z","updated_at":"2026-02-04T06:18:51.000Z","dependencies_parsed_at":"2024-01-27T01:45:32.949Z","dependency_job_id":"19321165-f0c4-4af1-98b7-0b15e388a5e8","html_url":"https://github.com/attr-encrypted/attr_encrypted","commit_stats":{"total_commits":295,"total_committers":43,"mean_commits":"6.8604651162790695","dds":0.6915254237288135,"last_synced_commit":"18ef8b65c951751497fca2aacb25a814590a5758"},"previous_names":["shuber/attr_encrypted"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/attr-encrypted/attr_encrypted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/sbom","scorecard":{"id":215780,"data":{"date":"2025-08-11","repo":{"name":"github.com/attr-encrypted/attr_encrypted","commit":"6d8928b68453f168a6c0d08dddf61ad8c0f6434a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":6,"reason":"Found 13/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/CI.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"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:46: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/CI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is required - but no codeowners file found in repo","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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-17T01:37:29.745Z","repository_id":477766,"created_at":"2025-08-17T01:37:29.745Z","updated_at":"2025-08-17T01:37:29.745Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29347814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-02-13T07:10:32.430Z","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-attr-encrypted?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-11-10T15:06:07.307Z","issues_count":40,"pull_requests_count":106,"avg_time_to_close_issue":68494025.65,"avg_time_to_close_pull_request":15848763.786516855,"issues_closed_count":20,"pull_requests_closed_count":89,"pull_request_authors_count":56,"issue_authors_count":39,"avg_comments_per_issue":3.475,"avg_comments_per_pull_request":1.0660377358490567,"merged_pull_requests_count":37,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":5,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":13310966.0,"past_year_avg_time_to_close_pull_request":1032436.5,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":10,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":0.2,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":7,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/issues","maintainers":[{"login":"joshbranham","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshbranham"},{"login":"mvastola","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mvastola"},{"login":"sbfaulkner","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sbfaulkner"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-attr-encrypted/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":13803963,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:15:04.898Z","latest_release_published_at":"2026-02-13T18:15:04.898Z","latest_release_number":"3.1.0-4","last_synced_at":"2026-03-13T19:23:04.507Z","created_at":"2026-02-13T18:15:04.700Z","updated_at":"2026-03-13T19:23:04.508Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:19:26.928Z","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-attr-encrypted?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-attr-encrypted/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":158363,"name":"attr_encrypted","ecosystem":"rubygems","description":"Generates attr_accessors that encrypt and decrypt attributes transparently","homepage":"http://github.com/attr-encrypted/attr_encrypted","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":[],"namespace":null,"versions_count":24,"first_release_published_at":"2009-12-01T01:38:10.950Z","latest_release_published_at":"2025-01-23T18:18:18.240Z","latest_release_number":"4.2.0","last_synced_at":"2026-04-28T21:22:51.008Z","created_at":"2022-04-05T17:24:01.116Z","updated_at":"2026-04-28T21:22:51.009Z","registry_url":"https://rubygems.org/gems/attr_encrypted","install_command":"gem install attr_encrypted -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/attr_encrypted/","metadata":{"funding":null},"repo_metadata":{"id":477766,"uuid":"103175","full_name":"attr-encrypted/attr_encrypted","owner":"attr-encrypted","description":"Generates attr_accessors that encrypt and decrypt attributes","archived":false,"fork":false,"pushed_at":"2025-10-12T03:08:39.000Z","size":424,"stargazers_count":2017,"open_issues_count":84,"forks_count":420,"subscribers_count":38,"default_branch":"master","last_synced_at":"2026-04-19T19:11:54.016Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attr-encrypted.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2009-01-08T08:08:20.000Z","updated_at":"2026-04-15T10:15:39.000Z","dependencies_parsed_at":"2024-01-27T01:45:32.949Z","dependency_job_id":"19321165-f0c4-4af1-98b7-0b15e388a5e8","html_url":"https://github.com/attr-encrypted/attr_encrypted","commit_stats":{"total_commits":295,"total_committers":43,"mean_commits":"6.8604651162790695","dds":0.6915254237288135,"last_synced_commit":"18ef8b65c951751497fca2aacb25a814590a5758"},"previous_names":["shuber/attr_encrypted"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/attr-encrypted/attr_encrypted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/sbom","scorecard":{"id":215780,"data":{"date":"2025-08-11","repo":{"name":"github.com/attr-encrypted/attr_encrypted","commit":"6d8928b68453f168a6c0d08dddf61ad8c0f6434a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":6,"reason":"Found 13/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/CI.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"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:46: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/CI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is required - but no codeowners file found in repo","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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-17T01:37:29.745Z","repository_id":477766,"created_at":"2025-08-17T01:37:29.745Z","updated_at":"2025-08-17T01:37:29.745Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32022561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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"},"tags":[]},"repo_metadata_updated_at":"2026-04-28T21:22:47.802Z","dependent_packages_count":29,"downloads":76017996,"downloads_period":"total","dependent_repos_count":2599,"rankings":{"downloads":0.35849288032024623,"dependent_repos_count":0.6261080942451578,"dependent_packages_count":0.8273770363845184,"stargazers_count":1.1496303564857662,"forks_count":1.290128343796345,"docker_downloads_count":0.42874187397553554,"average":0.7800797642012616},"purl":"pkg:gem/attr_encrypted","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/attr_encrypted","docker_dependents_count":216,"docker_downloads_count":455568954,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/attr_encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/attr_encrypted/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-26T00:03:37.400Z","issues_count":40,"pull_requests_count":106,"avg_time_to_close_issue":68494025.65,"avg_time_to_close_pull_request":15848763.786516855,"issues_closed_count":20,"pull_requests_closed_count":89,"pull_request_authors_count":56,"issue_authors_count":39,"avg_comments_per_issue":3.475,"avg_comments_per_pull_request":1.0660377358490567,"merged_pull_requests_count":37,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":4,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":13310966.0,"past_year_avg_time_to_close_pull_request":2990845.6666666665,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.25,"past_year_avg_comments_per_pull_request":0.6,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/issues","maintainers":[{"login":"joshbranham","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshbranham"},{"login":"mvastola","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mvastola"},{"login":"sbfaulkner","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sbfaulkner"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/attr_encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/attr_encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/attr_encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/attr_encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/attr_encrypted/codemeta","maintainers":[{"uuid":"66070","login":"mvastola","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://rubygems.org/profiles/mvastola","role":null,"created_at":"2022-11-07T13:10:13.916Z","updated_at":"2022-11-07T13:10:13.916Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/mvastola/packages"},{"uuid":"127188","login":"jbranham","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://rubygems.org/profiles/jbranham","role":null,"created_at":"2023-03-30T05:57:02.041Z","updated_at":"2023-03-30T05:57:02.041Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/jbranham/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205548,"maintainers_count":68472,"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":13529988,"name":"ruby-attr-encrypted","ecosystem":"debian","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:27:03.891Z","latest_release_published_at":"2026-02-10T23:27:03.891Z","latest_release_number":"3.1.0-3","last_synced_at":"2026-03-14T06:21:25.528Z","created_at":"2026-02-10T23:27:03.696Z","updated_at":"2026-03-14T06:21:25.529Z","registry_url":"https://tracker.debian.org/pkg/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":"https://packages.debian.org/bullseye/ruby-attr-encrypted","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb, ruby-encryptor (\u003e= 3.0.0~), ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:26:30.210Z","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-attr-encrypted?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-attr-encrypted/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":12185565,"name":"attr_encrypted","ecosystem":"rubygems","description":"Generates attr_accessors that encrypt and decrypt attributes transparently","homepage":"http://github.com/attr-encrypted/attr_encrypted","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":[],"namespace":null,"versions_count":24,"first_release_published_at":"2009-12-01T01:38:10.950Z","latest_release_published_at":"2025-01-23T18:18:18.240Z","latest_release_number":"4.2.0","last_synced_at":"2026-04-29T16:06:20.209Z","created_at":"2025-10-07T01:33:04.676Z","updated_at":"2026-04-29T17:19:59.534Z","registry_url":"https://gem.coop/gems/attr_encrypted","install_command":"gem install attr_encrypted -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/attr_encrypted/","metadata":{"funding":null},"repo_metadata":{"id":477766,"uuid":"103175","full_name":"attr-encrypted/attr_encrypted","owner":"attr-encrypted","description":"Generates attr_accessors that encrypt and decrypt attributes","archived":false,"fork":false,"pushed_at":"2025-10-12T03:08:39.000Z","size":424,"stargazers_count":2017,"open_issues_count":84,"forks_count":420,"subscribers_count":38,"default_branch":"master","last_synced_at":"2026-04-19T19:11:54.016Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attr-encrypted.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2009-01-08T08:08:20.000Z","updated_at":"2026-04-15T10:15:39.000Z","dependencies_parsed_at":"2024-01-27T01:45:32.949Z","dependency_job_id":"19321165-f0c4-4af1-98b7-0b15e388a5e8","html_url":"https://github.com/attr-encrypted/attr_encrypted","commit_stats":{"total_commits":295,"total_committers":43,"mean_commits":"6.8604651162790695","dds":0.6915254237288135,"last_synced_commit":"18ef8b65c951751497fca2aacb25a814590a5758"},"previous_names":["shuber/attr_encrypted"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/attr-encrypted/attr_encrypted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/sbom","scorecard":{"id":215780,"data":{"date":"2025-08-11","repo":{"name":"github.com/attr-encrypted/attr_encrypted","commit":"6d8928b68453f168a6c0d08dddf61ad8c0f6434a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":6,"reason":"Found 13/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/CI.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"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:46: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/CI.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/attr-encrypted/attr_encrypted/CI.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is required - but no codeowners file found in repo","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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-17T01:37:29.745Z","repository_id":477766,"created_at":"2025-08-17T01:37:29.745Z","updated_at":"2025-08-17T01:37:29.745Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32022561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":"attr-encrypted","name":"attr-encrypted","uuid":"5475200","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/5475200?v=4","repositories_count":2,"last_synced_at":"2024-03-25T19:31:33.134Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/attr-encrypted","funding_links":[],"total_stars":2317,"followers":3,"following":0,"created_at":"2022-11-02T16:17:13.717Z","updated_at":"2024-03-25T19:31:33.148Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attr-encrypted/repositories"},"tags":[{"name":"v4.2.0","sha":"c2aa160c2327f2613fbca913e9fd20bce6e98880","kind":"tag","published_at":"2025-01-23T18:17:17.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/v4.2.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"18ef8b65c951751497fca2aacb25a814590a5758","kind":"tag","published_at":"2024-09-20T14:29:13.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/v4.1.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"efe06f3803c784afaffe79c00e21f64a27b22f6e","kind":"tag","published_at":"2024-05-30T15:22:49.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/v4.1.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.1.0/manifests"},{"name":"v4.0.0","sha":"7e857a5f6199fa9577658bd8979f722841f9e252","kind":"tag","published_at":"2023-04-06T14:04:51.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/v4.0.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v4.0.0/manifests"},{"name":"3.1.0","sha":"3a9dfc78c3d24799f54a1926033d19e7448afe59","kind":"commit","published_at":"2018-02-12T03:45:38.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/3.1.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@3.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.1.0/manifests"},{"name":"3.0.3","sha":"1f19a580f5bdc391960e25a0cbb8a8f15add50a1","kind":"commit","published_at":"2016-07-23T04:31:23.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/3.0.3","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/3.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@3.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.3/manifests"},{"name":"3.0.2","sha":"3e3be8e8ef75c1f70d369c9a80810f6bfe47875a","kind":"commit","published_at":"2016-07-15T17:23:58.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/3.0.2","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/3.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@3.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.2/manifests"},{"name":"3.0.1","sha":"4aa28a1b63e0061c8ebf48f06ba19a81f0879fba","kind":"commit","published_at":"2016-04-02T23:28:02.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/3.0.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@3.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.1/manifests"},{"name":"3.0.0","sha":"3d79f684dd65067b9784cf39e5ff5077135340df","kind":"commit","published_at":"2016-03-30T03:13:04.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/3.0.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/3.0.0/manifests"},{"name":"2.0.0","sha":"e6f9e86f21127cc9cfd3c6be970f4b4d737997eb","kind":"commit","published_at":"2016-02-23T21:21:01.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/2.0.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/2.0.0/manifests"},{"name":"1.4.0","sha":"f7d2db8245170d743e57cfc80ef81d2ffd155d3f","kind":"commit","published_at":"2016-02-23T19:14:49.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.4.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.4.0/manifests"},{"name":"1.3.5","sha":"a4a51cca8cd69776b0a4ce0d1c7a845dbe1dfdbb","kind":"commit","published_at":"2016-01-13T05:16:28.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.5","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.5/manifests"},{"name":"v1.3.4","sha":"58583541ce70e6d7cc4af1b7658720477e449a5a","kind":"tag","published_at":"2015-05-12T02:51:28.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/v1.3.4","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/v1.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@v1.3.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v1.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/v1.3.4/manifests"},{"name":"1.3.4","sha":"58583541ce70e6d7cc4af1b7658720477e449a5a","kind":"commit","published_at":"2015-05-12T02:50:21.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.4","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.4/manifests"},{"name":"1.3.3","sha":"bf7a27ce159f7220695eeb14b8373a453e6ee030","kind":"commit","published_at":"2014-08-27T12:39:07.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.3","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.3/manifests"},{"name":"1.3.2","sha":"0b3acc2cdbc93b0972608369990ae85bed1ccc5b","kind":"commit","published_at":"2014-02-13T05:42:18.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.2","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.2/manifests"},{"name":"1.3.1","sha":"61a126e566504229cafc4f1ea84a7afa296867c6","kind":"commit","published_at":"2013-12-07T03:54:37.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.1/manifests"},{"name":"1.3.0","sha":"8e962e97116ace8b100e0b1c0083849dbbb30aac","kind":"commit","published_at":"2013-11-15T01:01:20.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.3.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.3.0/manifests"},{"name":"1.2.1","sha":"a4b25f01d1374659eaef1b34949e0fdf166537e4","kind":"commit","published_at":"2012-09-11T19:51:20.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.2.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.2.1/manifests"},{"name":"1.2.0","sha":"34b56c2cb1dca2c6c7151a826ef696abc8af68b0","kind":"tag","published_at":"2011-03-07T23:47:38.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.2.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.2.0/manifests"},{"name":"1.1.2","sha":"02aa3c6a7a2e387fc752c1f5d1cb6ec5a8a756b4","kind":"tag","published_at":"2010-04-26T20:35:52.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.1.2","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.2/manifests"},{"name":"1.1.1","sha":"fdf67e04f5a7c1dd825c444a582badfb7018bac9","kind":"tag","published_at":"2010-04-26T17:20:21.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.1.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.1/manifests"},{"name":"1.1.0","sha":"2f575599f7173eea935c615dca616d1829ee270d","kind":"tag","published_at":"2010-01-28T21:59:52.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.1.0","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.1.0/manifests"},{"name":"1.0.9","sha":"922af4f93a477015ff161aedeeb203fc9e6160fb","kind":"tag","published_at":"2010-01-14T21:48:16.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.9","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.9/manifests"},{"name":"1.0.8","sha":"b0a701f208b5f34dde475841e7b9d687fa1113ec","kind":"tag","published_at":"2009-01-18T23:03:07.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.8","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.8/manifests"},{"name":"1.0.7","sha":"bcfafe5781de797d8d91013f021e3baf7712c89e","kind":"tag","published_at":"2009-01-14T17:52:13.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.7","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.7/manifests"},{"name":"1.0.6","sha":"c150536304bc03d9f36c5e07af43604588c68c7c","kind":"tag","published_at":"2009-01-14T07:49:13.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.6","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.6/manifests"},{"name":"1.0.5","sha":"2c201cd8aac56a11030da74458d550450a6db419","kind":"tag","published_at":"2009-01-12T09:35:33.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.5","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.5/manifests"},{"name":"1.0.4","sha":"3c2a3f21ec00e84b9c687b1432d08c8ebda62536","kind":"tag","published_at":"2009-01-12T09:14:41.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.4","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.4/manifests"},{"name":"1.0.3","sha":"b508be49f4dc4c3a0b2f24f16cdc20961adb007f","kind":"tag","published_at":"2009-01-09T06:08:07.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.3","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.3/manifests"},{"name":"1.0.2","sha":"02603b401d3fbf4286fb3759d5612d6f01b487f0","kind":"tag","published_at":"2009-01-08T22:32:27.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.2","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.2/manifests"},{"name":"1.0.1","sha":"a9d03661593eb4e94e33b0acf07dcab1d902ef88","kind":"tag","published_at":"2009-01-08T21:26:36.000Z","download_url":"https://codeload.github.com/attr-encrypted/attr_encrypted/tar.gz/1.0.1","html_url":"https://github.com/attr-encrypted/attr_encrypted/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/attr-encrypted/attr_encrypted@1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/tags/1.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-29T17:19:59.507Z","dependent_packages_count":0,"downloads":76047148,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.38713584358846814,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":0.12904528119615605},"purl":"pkg:gem/attr_encrypted?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/attr_encrypted","docker_dependents_count":216,"docker_downloads_count":455568954,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/attr_encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/attr_encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-23T23:00:24.483Z","issues_count":40,"pull_requests_count":106,"avg_time_to_close_issue":68494025.65,"avg_time_to_close_pull_request":15848763.786516855,"issues_closed_count":20,"pull_requests_closed_count":89,"pull_request_authors_count":56,"issue_authors_count":39,"avg_comments_per_issue":3.475,"avg_comments_per_pull_request":1.0660377358490567,"merged_pull_requests_count":37,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":4,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":13310966.0,"past_year_avg_time_to_close_pull_request":2990845.6666666665,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.25,"past_year_avg_comments_per_pull_request":0.6,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/issues","maintainers":[{"login":"joshbranham","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshbranham"},{"login":"mvastola","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mvastola"},{"login":"sbfaulkner","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sbfaulkner"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/attr_encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/attr_encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/attr_encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/attr_encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/attr_encrypted/codemeta","maintainers":[{"uuid":"66070","login":"mvastola","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://gem.coop/profiles/mvastola","role":null,"created_at":"2025-10-07T12:26:05.301Z","updated_at":"2025-10-07T12:26:05.301Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/mvastola/packages"},{"uuid":"127188","login":"jbranham","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://gem.coop/profiles/jbranham","role":null,"created_at":"2025-10-07T12:26:05.439Z","updated_at":"2025-10-07T12:26:05.439Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/jbranham/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190401,"maintainers_count":67480,"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":13566109,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:35:36.854Z","latest_release_published_at":"2026-02-11T06:35:36.854Z","latest_release_number":"3.1.0-4","last_synced_at":"2026-03-12T01:18:51.780Z","created_at":"2026-02-11T06:35:36.645Z","updated_at":"2026-03-12T01:18:51.781Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:56:11.894Z","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-attr-encrypted?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-attr-encrypted/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":13466388,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T16:13:31.271Z","latest_release_published_at":"2026-02-09T16:13:31.271Z","latest_release_number":"3.1.0-4ubuntu1","last_synced_at":"2026-03-09T17:03:20.087Z","created_at":"2026-02-09T16:13:30.952Z","updated_at":"2026-03-09T17:32:35.497Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Ubuntu Developers \u003cubuntu-devel-discuss@lists.ubuntu.com\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","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-attr-encrypted?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-attr-encrypted/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":13778444,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:13:01.456Z","latest_release_published_at":"2026-02-13T13:13:01.456Z","latest_release_number":"3.1.0-4","last_synced_at":"2026-03-13T22:41:00.269Z","created_at":"2026-02-13T13:13:01.269Z","updated_at":"2026-03-13T22:41:00.270Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:13:01.969Z","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-attr-encrypted?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-attr-encrypted/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":13668606,"name":"ruby-attr-encrypted","ecosystem":"debian","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:16:23.185Z","latest_release_published_at":"2026-02-12T12:16:23.185Z","latest_release_number":"4.1.0-1","last_synced_at":"2026-03-14T15:01:55.882Z","created_at":"2026-02-12T12:16:22.497Z","updated_at":"2026-03-14T15:01:55.882Z","registry_url":"https://tracker.debian.org/pkg/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":"https://packages.debian.org/trixie/ruby-attr-encrypted","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.7.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:16:23.801Z","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-attr-encrypted?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-attr-encrypted/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":13711993,"name":"ruby-attr-encrypted","ecosystem":"debian","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:25:19.954Z","latest_release_published_at":"2026-02-12T23:25:19.954Z","latest_release_number":"3.1.0-4","last_synced_at":"2026-03-13T23:44:40.153Z","created_at":"2026-02-12T23:25:19.678Z","updated_at":"2026-03-13T23:44:40.154Z","registry_url":"https://tracker.debian.org/pkg/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":"https://packages.debian.org/bookworm/ruby-attr-encrypted","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:25:20.499Z","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-attr-encrypted?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-attr-encrypted/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":13406375,"name":"ruby-attr-encrypted","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/attr-encrypted/attr_encrypted","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/attr-encrypted/attr_encrypted","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T14:53:18.089Z","latest_release_published_at":"2026-02-06T14:53:18.089Z","latest_release_number":"3.1.0-4","last_synced_at":"2026-03-06T16:46:54.192Z","created_at":"2026-02-06T14:53:17.789Z","updated_at":"2026-03-06T16:46:54.192Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-attr-encrypted","install_command":"apt-get install ruby-attr-encrypted","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-attr-encrypted","standards_version":"4.5.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, ruby-encryptor, ruby-activerecord, ruby-sequel, ruby-sqlite3, ruby-actionpack","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-attr-encrypted?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-attr-encrypted","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-attr-encrypted/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-attr-encrypted/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-attr-encrypted/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-attr-encrypted/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-attr-encrypted/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-attr-encrypted/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":3085,"full_name":"attr-encrypted/attr_encrypted","default_branch":"master","total_commits":304,"total_committers":44,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.909090909090909,"dds":0.700657894736842,"past_year_total_commits":2,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":1.0,"past_year_dds":0.5,"last_synced_at":"2026-04-28T21:41:44.795Z","last_synced_commit":"e8c9e2ff22d93e645f5957d314c44fa28ecf2f9e","created_at":"2023-03-07T09:16:33.027Z","updated_at":"2026-04-28T21:39:38.733Z","committers":[{"name":"Stephen Aghaulor","email":"saghaulor@gmail.com","login":"saghaulor","count":91},{"name":"Sean Huber","email":"shuber@huberry.com","login":"shuber","count":67},{"name":"S. Brent Faulkner","email":"brent.faulkner@mosaic.com","login":null,"count":33},{"name":"Tamir Duberstein","email":"tamird@squareup.com","login":"tamird","count":22},{"name":"Josh Branham","email":"josh.php@gmail.com","login":"joshbranham","count":16},{"name":"Richard Cook","email":"rcook@rcook.org","login":"rcook","count":12},{"name":"Shinichi Maeshima","email":"netwillnet@gmail.com","login":"willnet","count":6},{"name":"Billy Monk","email":"billy.monk@mosaic.com","login":null,"count":4},{"name":"nate","email":"nate@inklingmarkets.com","login":null,"count":3},{"name":"Cheyne Wallace","email":"cheyne.wallace@gmail.com","login":"cheynewallace","count":3},{"name":"Mike Vastola","email":"mike@vasto.la","login":"mvastola","count":3},{"name":"Vimal V Nair","email":"vimalvnair999@gmail.com","login":"vimalvnair","count":3},{"name":"Justin Mazzi","email":"hh@mailheist.com","login":null,"count":2},{"name":"S. Brent Faulkner","email":"brentf@unwwwired.net","login":null,"count":2},{"name":"Josh Branham","email":"jbranham@salsify.com","login":null,"count":2},{"name":"Billy Monk","email":"billy.monk@gmail.com","login":null,"count":2},{"name":"Andrew Kane","email":"andrew@chartkick.com","login":"ankane","count":2},{"name":"Douwe Maan","email":"me@douwe.me","login":"DouweM","count":2},{"name":"Matt Larraz","email":"mlarraz","login":"mlarraz","count":2},{"name":"Michael Grosser","email":"michael@grosser.it","login":"grosser","count":2},{"name":"Peter Marreck","email":"lumbergh@gmail.com","login":"pmarreck","count":2},{"name":"Étienne Barrié","email":"etienne.barrie@gmail.com","login":"etiennebarrie","count":1},{"name":"connorshea","email":"connor.james.shea@gmail.com","login":"connorshea","count":1},{"name":"Yuri Zubov","email":"yury.zubau@gmail.com","login":"yuri-zubov","count":1},{"name":"Tejas Manohar","email":"github@tejas.io","login":"tejasmanohar","count":1},{"name":"S. Brent Faulkner","email":"sbfaulkner@gmail.com","login":"sbfaulkner","count":1},{"name":"Matt Wean","email":"matthew.wean@gmail.com","login":"mwean","count":1},{"name":"Justin Mazzi","email":"jmazzi@gmail.com","login":"jmazzi","count":1},{"name":"Duke Jones","email":"duke@nightvision.local","login":null,"count":1},{"name":"Stephen Blackstone","email":"stephen.b@eleganttech.co","login":null,"count":1},{"name":"Justin Bull","email":"me@justinbull.ca","login":"f3ndot","count":1},{"name":"Josh Miltz","email":"josh@miltz.co.za","login":"miltzi","count":1},{"name":"Josh Lubaway","email":"jish","login":"jish","count":1},{"name":"Jean Boussier","email":"jean.boussier@gmail.com","login":"byroot","count":1},{"name":"Igor Drozdov","email":"ihardrozdov@gmail.com","login":"igor-drozdov","count":1},{"name":"Eugene Kenny","email":"elkenny@gmail.com","login":"eugeneius","count":1},{"name":"Dillon Welch","email":"daw0328@gmail.com","login":"dillonwelch","count":1},{"name":"Cyrus Stoller","email":"cyrus.stoller@gmail.com","login":"cyrusstoller","count":1},{"name":"Chikanaga Tomoyuki","email":"t-chikanaga@groovenauts.jp","login":"nagachika","count":1},{"name":"C Rahul","email":"3462960+bitsapien","login":"bitsapien","count":1},{"name":"Brian Freese","email":"brianfreese@hotmail.com","login":"bfreese","count":1},{"name":"Bojan Marjanovic","email":"marjanovic93@gmail.com","login":"boimw","count":1},{"name":"Austin Taylor","email":"austin.taylor@gmail.com","login":"austintaylor","count":1},{"name":"Arthur Neves","email":"arthurnn@gmail.com","login":"arthurnn","count":1}],"past_year_committers":[{"name":"Yuri Zubov","email":"yury.zubau@gmail.com","login":"yuri-zubov","count":1},{"name":"Bojan Marjanovic","email":"marjanovic93@gmail.com","login":"boimw","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-30T00:00:07.427Z","repositories_count":6223408,"commits_count":899987855,"contributors_count":34899142,"owners_count":1147642,"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":"attr-encrypted/attr_encrypted","html_url":"https://github.com/attr-encrypted/attr_encrypted","last_synced_at":"2026-04-29T10:05:48.712Z","status":"error","issues_count":40,"pull_requests_count":106,"avg_time_to_close_issue":68494025.65,"avg_time_to_close_pull_request":15848763.786516855,"issues_closed_count":20,"pull_requests_closed_count":89,"pull_request_authors_count":56,"issue_authors_count":39,"avg_comments_per_issue":3.475,"avg_comments_per_pull_request":1.0660377358490567,"merged_pull_requests_count":37,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":4,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":13310966.0,"past_year_avg_time_to_close_pull_request":2990845.6666666665,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.25,"past_year_avg_comments_per_pull_request":0.6,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2023-05-12T07:56:06.604Z","updated_at":"2026-04-29T10:05:48.712Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/attr-encrypted%2Fattr_encrypted/issues","issue_labels_count":{},"pull_request_labels_count":{"docs":4,"enhancement":1,"bug":1},"issue_author_associations_count":{"NONE":39,"MEMBER":1},"pull_request_author_associations_count":{"NONE":56,"MEMBER":33,"CONTRIBUTOR":17},"issue_authors":{"adelatuduce":2,"jfouse":1,"mauro-oto":1,"nesrual":1,"schristm":1,"fatkodima":1,"Juraci":1,"arvindmehra":1,"mckaysalisbury":1,"yegct":1,"bacancy-techn":1,"abuzzany":1,"TheStranjer":1,"markclong":1,"sanjaysalunkhe-ayla":1,"dzajic":1,"luopio":1,"rwestlund":1,"kimyu92":1,"StevenXL":1,"DimitriosLisenko":1,"prognostikos":1,"stevenjackson":1,"CKolkey":1,"BenLussier":1,"EnziinSystem":1,"dannyyu92":1,"Hareramrai":1,"fladson":1,"sbfaulkner":1,"dalezak":1,"anujc4":1,"ryosk7":1,"mechos3d":1,"typeoneerror":1,"shairozan":1,"latortuga":1,"jaleszek":1,"omaik":1},"pull_request_authors":{"joshbranham":28,"willnet":7,"mvastola":5,"formigarafa":3,"randito78":2,"chadwilken":2,"lacostenycoder":2,"roman-melnyk":2,"wadewinningham":2,"yuri-zubov":2,"boimw":2,"michellefoy":2,"sanjaysalunkhe-ayla":2,"AndrewHYi":2,"priyankatapar":2,"movermeyer":1,"yegct":1,"cchawn":1,"ryosk7":1,"Ifraah":1,"bglusman":1,"nightpool":1,"TheStranjer":1,"gnagno":1,"sokmesakhiev":1,"DimitriosLisenko":1,"AGarrow":1,"arthurnn":1,"luka2805":1,"jvlara":1,"r7kamura":1,"miguelakira":1,"tonymarklove-babylon":1,"alexbrinkman":1,"seanabrahams":1,"igor-drozdov":1,"domcleal":1,"GabrielSturtevant":1,"etagwerker":1,"etiennebarrie":1,"twanmaus":1,"zackreverb":1,"delucas":1,"stevenjackson":1,"hgwr":1,"wetoolaguer":1,"dan1d":1,"rcook":1,"merrington":1,"bfreese":1,"goreilly":1,"vimalvnair":1,"lucafrollo":1,"melancholyfleur":1,"meganemura":1,"mlarraz":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-30T00:00:06.639Z","repositories_count":14447172,"issues_count":34175470,"pull_requests_count":112188235,"authors_count":11249271,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":2},"past_year_pull_request_author_associations_count":{"NONE":3,"CONTRIBUTOR":2},"past_year_issue_authors":{"dannyyu92":1,"latortuga":1},"past_year_pull_request_authors":{"boimw":2,"yuri-zubov":2,"dan1d":1},"maintainers":[{"login":"joshbranham","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/joshbranham"},{"login":"mvastola","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mvastola"},{"login":"sbfaulkner","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sbfaulkner"}],"active_maintainers":[]},"events":{"total":{"ReleaseEvent":1,"DeleteEvent":2,"PullRequestEvent":16,"ForkEvent":4,"IssuesEvent":3,"WatchEvent":19,"IssueCommentEvent":4,"PushEvent":6,"PullRequestReviewEvent":2,"CreateEvent":4},"last_year":{"PullRequestEvent":7,"ForkEvent":3,"WatchEvent":5,"PushEvent":1,"PullRequestReviewEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"rubygems","filepath":"attr_encrypted.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-08T08:16:19.320Z","updated_at":"2022-08-08T08:16:19.320Z","repository_link":"https://github.com/attr-encrypted/attr_encrypted/blob/master/attr_encrypted.gemspec","dependencies":[{"id":634820798,"package_name":"encryptor","ecosystem":"rubygems","requirements":"~\u003e 3.0.0","direct":true,"kind":"runtime","optional":false},{"id":634820799,"package_name":"datamapper","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820800,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820801,"package_name":"minitest","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820802,"package_name":"sequel","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820803,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"\u003c 1.7.0","direct":true,"kind":"development","optional":false},{"id":634820804,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"\u003c 3.0.0","direct":true,"kind":"development","optional":false},{"id":634820805,"package_name":"activerecord-jdbcsqlite3-adapter","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820806,"package_name":"jdbc-sqlite3","ecosystem":"rubygems","requirements":"\u003c 3.8.7","direct":true,"kind":"development","optional":false},{"id":634820807,"package_name":"sqlite3","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820808,"package_name":"dm-sqlite-adapter","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820809,"package_name":"simplecov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820810,"package_name":"simplecov-rcov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":634820811,"package_name":"codeclimate-test-reporter","ecosystem":"rubygems","requirements":"\u003c= 0.6.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/CI.yml","sha":null,"kind":"manifest","created_at":"2023-07-05T14:56:31.314Z","updated_at":"2023-07-05T14:56:31.314Z","repository_link":"https://github.com/attr-encrypted/attr_encrypted/blob/master/.github/workflows/CI.yml","dependencies":[{"id":11146086686,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":11146086687,"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":"2023-10-20T18:07:00.226Z","updated_at":"2023-10-20T18:07:00.226Z","repository_link":"https://github.com/attr-encrypted/attr_encrypted/blob/master/Gemfile","dependencies":[]}],"score":32.218913150674375,"created_at":"2024-12-15T21:38:08.108Z","updated_at":"2026-05-01T02:30:15.872Z","avatar_url":"https://github.com/attr-encrypted.png","language":"Ruby","monthly_downloads":0,"readme":"# attr_encrypted\n\n![workflow](https://github.com/attr-encrypted/attr_encrypted/actions/workflows/CI.yml/badge.svg) [![Gem Version](https://badge.fury.io/rb/attr_encrypted.svg)](https://badge.fury.io/rb/attr_encrypted)\n\nGenerates attr_accessors that transparently encrypt and decrypt attributes.\n\nIt works with ANY class, however, you get a few extra features when you're using it with `ActiveRecord` or `Sequel`.\n\n## Installation\n\nAdd attr_encrypted to your gemfile:\n\n```ruby\n  gem \"attr_encrypted\"\n```\n\nThen install the gem:\n\n```bash\n  bundle install\n```\n\n## Usage\n\nIf you're using an ORM like `ActiveRecord` or `Sequel`, using attr_encrypted is easy:\n\n```ruby\n  class User\n    attr_encrypted :ssn, key: 'This is a key that is 256 bits!!'\n  end\n```\n\nIf you're using a PORO, you have to do a little bit more work by extending the class:\n\n```ruby\n  class User\n    extend AttrEncrypted\n    attr_accessor :name\n    attr_encrypted :ssn, key: 'This is a key that is 256 bits!!'\n\n    def load\n      # loads the stored data\n    end\n\n    def save\n      # saves the :name and :encrypted_ssn attributes somewhere (e.g. filesystem, database, etc)\n    end\n  end\n\n  user = User.new\n  user.ssn = '123-45-6789'\n  user.ssn # returns the unencrypted object ie. '123-45-6789'\n  user.encrypted_ssn # returns the encrypted version of :ssn\n  user.save\n\n  user = User.load\n  user.ssn # decrypts :encrypted_ssn and returns '123-45-6789'\n```\n\n### Encrypt/decrypt attribute class methods\n\nTwo class methods are available for each attribute: `User.encrypt_email` and `User.decrypt_email`. They accept as arguments the same options that the `attr_encrypted` class method accepts. For example:\n\n```ruby\n  key = SecureRandom.random_bytes(32)\n  iv = SecureRandom.random_bytes(12)\n  encrypted_email = User.encrypt_email('test@test.com', iv: iv, key: key)\n  email = User.decrypt_email(encrypted_email, iv: iv, key: key)\n```\n\nThe `attr_encrypted` class method is also aliased as `attr_encryptor` to conform to Ruby's `attr_` naming conventions. I should have called this project `attr_encryptor` but it was too late when I realized it ='(.\n\n### attr_encrypted with database persistence\n\nBy default, `attr_encrypted` uses the `:per_attribute_iv` encryption mode. This mode requires a column to store your cipher text and a column to store your IV (initialization vector).\n\nCreate or modify the table that your model uses to add a column with the `encrypted_` prefix (which can be modified, see below), e.g. `encrypted_ssn` via a migration like the following:\n\n```ruby\n  create_table :users do |t|\n    t.string :name\n    t.string :encrypted_ssn\n    t.string :encrypted_ssn_iv\n    t.timestamps\n  end\n```\n\nYou can use a string or binary column type. (See the encode option section below for more info)\n\nIf you use the same key for each record, add a unique index on the IV. Repeated IVs with AES-GCM (the default algorithm) allow an attacker to recover the key.\n\n```ruby\n  add_index :users, :encrypted_ssn_iv, unique: true\n```\n\n### Specifying the encrypted attribute name\n\nBy default, the encrypted attribute name is `encrypted_#{attribute}` (e.g. `attr_encrypted :email` would create an attribute named `encrypted_email`). So, if you're storing the encrypted attribute in the database, you need to make sure the `encrypted_#{attribute}` field exists in your table. You have a couple of options if you want to name your attribute or db column something else, see below for more details.\n\n\n## attr_encrypted options\n\n#### Options are evaluated\nAll options will be evaluated at the instance level. If you pass in a symbol it will be passed as a message to the instance of your class. If you pass a proc or any object that responds to `:call` it will be called. You can pass in the instance of your class as an argument to the proc. Anything else will be returned. For example:\n\n##### Symbols representing instance methods\n\nHere is an example class that uses an instance method to determines the encryption key to use.\n\n```ruby\n  class User\n    attr_encrypted :email, key: :encryption_key\n\n    def encryption_key\n      # does some fancy logic and returns an encryption key\n    end\n  end\n```\n\n\n##### Procs\n\nHere is an example of passing a proc/lambda object as the `:key` option as well:\n\n```ruby\n  class User\n    attr_encrypted :email, key: proc { |user| user.key }\n  end\n```\n\n\n### Default options\n\nThe following are the default options used by `attr_encrypted`:\n\n```ruby\n  prefix:            'encrypted_',\n  suffix:            '',\n  if:                true,\n  unless:            false,\n  encode:            false,\n  encode_iv:         true,\n  encode_salt:       true,\n  default_encoding:  'm',\n  marshal:           false,\n  marshaler:         Marshal,\n  dump_method:       'dump',\n  load_method:       'load',\n  encryptor:         Encryptor,\n  encrypt_method:    'encrypt',\n  decrypt_method:    'decrypt',\n  mode:              :per_attribute_iv,\n  algorithm:         'aes-256-gcm',\n  allow_empty_value: false\n```\n\nAll of the aforementioned options are explained in depth below.\n\nAdditionally, you can specify default options for all encrypted attributes in your class. Instead of having to define your class like this:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!', prefix: '', suffix: '_crypted'\n    attr_encrypted :ssn, key: 'a different secret key', prefix: '', suffix: '_crypted'\n    attr_encrypted :credit_card, key: 'another secret key', prefix: '', suffix: '_crypted'\n  end\n```\n\nYou can simply define some default options like so:\n\n```ruby\n  class User\n    attr_encrypted_options.merge!(prefix: '', :suffix =\u003e '_crypted')\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!'\n    attr_encrypted :ssn, key: 'a different secret key'\n    attr_encrypted :credit_card, key: 'another secret key'\n  end\n```\n\nThis should help keep your classes clean and DRY.\n\n### The `:attribute` option\n\nYou can simply pass the name of the encrypted attribute as the `:attribute` option:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!', attribute: 'email_encrypted'\n  end\n```\n\nThis would generate an attribute named `email_encrypted`\n\n\n### The `:prefix` and `:suffix` options\n\nIf you don't like the `encrypted_#{attribute}` naming convention then you can specify your own:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!', prefix: 'secret_', suffix: '_crypted'\n  end\n```\n\nThis would generate the following attribute: `secret_email_crypted`.\n\n\n### The `:key` option\n\nThe `:key` option is used to pass in a data encryption key to be used with whatever encryption class you use. If you're using `Encryptor`, the key must meet minimum length requirements respective to the algorithm that you use; aes-256 requires a 256 bit key, etc. The `:key` option is not required (see custom encryptor below).\n\n\n##### Unique keys for each attribute\n\nYou can specify unique keys for each attribute if you'd like:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!'\n    attr_encrypted :ssn, key: 'a different secret key'\n  end\n```\n\nIt is recommended to use a symbol or a proc for the key and to store information regarding what key was used to encrypt your data. (See below for more details.)\n\n\n### The `:if` and `:unless` options\n\nThere may be times that you want to only encrypt when certain conditions are met. For example maybe you're using rails and you don't want to encrypt attributes when you're in development mode. You can specify conditions like this:\n\n```ruby\n  class User \u003c ActiveRecord::Base\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!', unless: Rails.env.development?\n    attr_encrypted :ssn, key: 'This is a key that is 256 bits!!', if: Rails.env.development?\n  end\n```\n\nYou can specify both `:if` and `:unless` options.\n\n\n### The `:encryptor`, `:encrypt_method`, and `:decrypt_method` options\n\nThe `Encryptor` class is used by default. You may use your own custom encryptor by specifying the `:encryptor`, `:encrypt_method`, and `:decrypt_method` options.\n\nLets suppose you'd like to use this custom encryptor class:\n\n```ruby\n  class SillyEncryptor\n    def self.silly_encrypt(options)\n      (options[:value] + options[:secret_key]).reverse\n    end\n\n    def self.silly_decrypt(options)\n      options[:value].reverse.gsub(/#{options[:secret_key]}$/, '')\n    end\n  end\n```\n\nSimply set up your class like so:\n\n```ruby\n  class User\n    attr_encrypted :email, secret_key: 'This is a key that is 256 bits!!', encryptor: SillyEncryptor, encrypt_method: :silly_encrypt, decrypt_method: :silly_decrypt\n  end\n```\n\nAny options that you pass to `attr_encrypted` will be passed to the encryptor class along with the `:value` option which contains the string to encrypt/decrypt. Notice that the above example uses `:secret_key` instead of `:key`. See [encryptor](https://github.com/attr-encrypted/encryptor) for more info regarding the default encryptor class.\n\n\n### The `:mode` option\n\nThe mode options allows you to specify in what mode your data will be encrypted. There are currently three modes: `:per_attribute_iv`, `:per_attribute_iv_and_salt`, and `:single_iv_and_salt`.\n\n__NOTE: `:per_attribute_iv_and_salt` and `:single_iv_and_salt` modes are deprecated and will be removed in the next major release.__\n\n\n### The `:algorithm` option\n\nThe default `Encryptor` class uses the standard ruby OpenSSL library. Its default algorithm is `aes-256-gcm`. You can modify this by passing the `:algorithm` option to the `attr_encrypted` call like so:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!', algorithm: 'aes-256-cbc'\n  end\n```\n\nTo view a list of all cipher algorithms that are supported on your platform, run the following code in your favorite Ruby REPL:\n\n```ruby\n  require 'openssl'\n  puts OpenSSL::Cipher.ciphers\n```\nSee [Encryptor](https://github.com/attr-encrypted/encryptor#algorithms) for more information.\n\n\n### The `:encode`, `:encode_iv`, `:encode_salt`, and `:default_encoding` options\n\nYou're probably going to be storing your encrypted attributes somehow (e.g. filesystem, database, etc). You can simply pass the `:encode` option to automatically encode/decode when encrypting/decrypting. The default behavior assumes that you're using a string column type and will base64 encode your cipher text. If you choose to use the binary column type then encoding is not required, but be sure to pass in `false` with the `:encode` option.\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'some secret key', encode: true, encode_iv: true, encode_salt: true\n  end\n```\n\nThe default encoding is `m` (base64). You can change this by setting `encode: 'some encoding'`. See [`Array#pack`](http://ruby-doc.org/core-2.3.0/Array.html#method-i-pack) for more encoding options.\n\n\n### The `:marshal`, `:dump_method`, and `:load_method` options\n\nYou may want to encrypt objects other than strings (e.g. hashes, arrays, etc). If this is the case, simply pass the `:marshal` option to automatically marshal when encrypting/decrypting.\n\n```ruby\n  class User\n    attr_encrypted :credentials, key: 'some secret key', marshal: true\n  end\n```\n\nYou may also optionally specify `:marshaler`, `:dump_method`, and `:load_method` if you want to use something other than the default `Marshal` object.\n\n### The `:allow_empty_value` option\n\nYou may want to encrypt empty strings or nil so as to not reveal which records are populated and which records are not.\n\n```ruby\n  class User\n    attr_encrypted :credentials, key: 'some secret key', marshal: true, allow_empty_value: true\n  end\n```\n\n\n## ORMs\n\n### ActiveRecord\n\nIf you're using this gem with `ActiveRecord`, you get a few extra features:\n\n#### Default options\n\nThe `:encode` option is set to true by default.\n\n#### Dynamic `find_by_` and `scoped_by_` methods\n\nLet's say you'd like to encrypt your user's email addresses, but you also need a way for them to login. Simply set up your class like so:\n\n```ruby\n  class User \u003c ActiveRecord::Base\n    attr_encrypted :email, key: 'This is a key that is 256 bits!!'\n    attr_encrypted :password, key: 'some other secret key'\n  end\n```\n\nYou can now lookup and login users like so:\n\n```ruby\n  User.find_by_email_and_password('test@example.com', 'testing')\n```\n\nThe call to `find_by_email_and_password` is intercepted and modified to `find_by_encrypted_email_and_encrypted_password('ENCRYPTED EMAIL', 'ENCRYPTED PASSWORD')`. The dynamic scope methods like `scoped_by_email_and_password` work the same way.\n\nNOTE: This only works if all records are encrypted with the same encryption key (per attribute).\n\n__NOTE: This feature is deprecated and will be removed in the next major release.__\n\n\n### Sequel\n\n#### Default options\n\nThe `:encode` option is set to true by default.\n\n\n## Deprecations\n\nattr_encrypted v2.0.0 now depends on encryptor v2.0.0. As part of both major releases many insecure defaults and behaviors have been deprecated. The new default behavior is as follows:\n\n* Default `:mode` is now `:per_attribute_iv`, the default `:mode` in attr_encrypted v1.x was `:single_iv_and_salt`.\n* Default `:algorithm` is now 'aes-256-gcm', the default `:algorithm` in attr_encrypted v1.x was 'aes-256-cbc'.\n* The encryption key provided must be of appropriate length respective to the algorithm used. Previously, encryptor did not verify minimum key length.\n* The dynamic finders available in ActiveRecord will only work with `:single_iv_and_salt` mode. It is strongly advised that you do not use this mode. If you can search the encrypted data, it wasn't encrypted securely. This functionality will be deprecated in the next major release.\n* `:per_attribute_iv_and_salt` and `:single_iv_and_salt` modes are deprecated and will be removed in the next major release.\n\nBackwards compatibility is supported by providing a special option that is passed to encryptor, namely, `:insecure_mode`:\n\n```ruby\n  class User\n    attr_encrypted :email, key: 'a secret key', algorithm: 'aes-256-cbc', mode: :single_iv_and_salt, insecure_mode: true\n  end\n```\n\nThe `:insecure_mode` option will allow encryptor to ignore the new security requirements. It is strongly advised that if you use this older insecure behavior that you migrate to the newer more secure behavior.\n\n\n## Upgrading from attr_encrypted v1.x to v3.x\n\nModify your gemfile to include the new version of attr_encrypted:\n\n```ruby\n  gem attr_encrypted, \"~\u003e 3.0.0\"\n```\n\nThe update attr_encrypted:\n\n```bash\n  bundle update attr_encrypted\n```\n\nThen modify your models using attr\\_encrypted to account for the changes in default options. Specifically, pass in the `:mode` and `:algorithm` options that you were using if you had not previously done so. If your key is insufficient length relative to the algorithm that you use, you should also pass in `insecure_mode: true`; this will prevent Encryptor from raising an exception regarding insufficient key length. Please see the Deprecations sections for more details including an example of how to specify your model with default options from attr_encrypted v1.x.\n\n## Upgrading from attr_encrypted v2.x to v3.x\n\nA bug was discovered in Encryptor v2.0.0 that incorrectly set the IV when using an AES-\\*-GCM algorithm. Unfornately fixing this major security issue results in the inability to decrypt records encrypted using an AES-*-GCM algorithm from Encryptor v2.0.0. Please see [Upgrading to Encryptor v3.0.0](https://github.com/attr-encrypted/encryptor#upgrading-from-v200-to-v300) for more info.\n\nIt is strongly advised that you re-encrypt your data encrypted with Encryptor v2.0.0. However, you'll have to take special care to re-encrypt. To decrypt data encrypted with Encryptor v2.0.0 using an AES-\\*-GCM algorithm you can use the `:v2_gcm_iv` option.\n\nIt is recommended that you implement a strategy to insure that you do not mix the encryption implementations of Encryptor. One way to do this is to re-encrypt everything while your application is offline.Another way is to add a column that keeps track of what implementation was used. The path that you choose will depend on your situtation. Below is an example of how you might go about re-encrypting your data.\n\n```ruby\n  class User\n    attr_encrypted :ssn, key: :encryption_key, v2_gcm_iv: is_decrypting?(:ssn)\n\n    def is_decrypting?(attribute)\n      attr_encrypted_encrypted_attributes[attribute][:operation] == :decrypting\n    end\n  end\n\n  User.all.each do |user|\n    old_ssn = user.ssn\n    user.ssn= old_ssn\n    user.save\n  end\n```\n\n## Things to consider before using attr_encrypted\n\n#### Searching, joining, etc\nWhile choosing to encrypt at the attribute level is the most secure solution, it is not without drawbacks. Namely, you cannot search the encrypted data, and because you can't search it, you can't index it either. You also can't use joins on the encrypted data. Data that is securely encrypted is effectively noise. So any operations that rely on the data not being noise will not work. If you need to do any of the aforementioned operations, please consider using database and file system encryption along with transport encryption as it moves through your stack.\n\n#### Data leaks\nPlease also consider where your data leaks. If you're using attr_encrypted with Rails, it's highly likely that this data will enter your app as a request parameter. You'll want to be sure that you're filtering your request params from your logs or else your data is sitting in the clear in your logs. [Parameter Filtering in Rails](http://apidock.com/rails/ActionDispatch/Http/FilterParameters) Please also consider other possible leak points.\n\n#### Storage requirements\nWhen storing your encrypted data, please consider the length requirements of the db column that you're storing the cipher text in. Older versions of Mysql attempt to 'help' you by truncating strings that are too large for the column. When this happens, you will not be able to decrypt your data. [MySQL Strict Trans](http://www.davidpashley.com/2009/02/15/silently-truncated/)\n\n#### Metadata regarding your crypto implementation\nIt is advisable to also store metadata regarding the circumstances of your encrypted data. Namely, you should store information about the key used to encrypt your data, as well as the algorithm. Having this metadata with every record will make key rotation and migrating to a new algorithm signficantly easier. It will allow you to continue to decrypt old data using the information provided in the metadata and new data can be encrypted using your new key and algorithm of choice.\n\n#### Enforcing the IV as a nonce\nOn a related note, most algorithms require that your IV be unique for every record and key combination. You can enforce this using composite unique indexes on your IV and encryption key name/id column. [RFC 5084](https://tools.ietf.org/html/rfc5084#section-1.5)\n\n#### Unique key per record\nLastly, while the `:per_attribute_iv_and_salt` mode is more secure than `:per_attribute_iv` mode because it uses a unique key per record, it uses a PBKDF function which introduces a huge performance hit (175x slower by my benchmarks). There are other ways of deriving a unique key per record that would be much faster.\n\n## Note on Patches/Pull Requests\n\n* Fork the project.\n* Make your feature addition or bug fix.\n* Add tests for it. This is important so I don't break it in a\n  future version unintentionally.\n* Commit, do not mess with rakefile, version, changelog, or history.\n* Send me a pull request. Bonus points for topic branches.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activejob","activerecord","mvc","rack","background-jobs","sidekiq","rubocop","rubygems","rspec","jobs"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/464","html_url":"https://ruby.ecosyste.ms/projects/464"}