{"id":18444644,"url":"https://github.com/ronin-rb/ronin-db-activerecord","last_synced_at":"2025-09-09T23:40:28.891Z","repository":{"id":65148224,"uuid":"462139621","full_name":"ronin-rb/ronin-db-activerecord","owner":"ronin-rb","description":"ActiveRecord backend for the Ronin Database","archived":false,"fork":false,"pushed_at":"2024-08-04T19:57:48.000Z","size":477,"stargazers_count":7,"open_issues_count":6,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-29T14:22:26.887Z","etag":null,"topics":["activerecord","activerecord-models","database","infosec","recon","ruby","security"],"latest_commit_sha":null,"homepage":"https://ronin-rb.dev","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ronin-rb.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"ronin-rb","patreon":"roninrb"}},"created_at":"2022-02-22T04:37:21.000Z","updated_at":"2024-08-04T19:57:52.000Z","dependencies_parsed_at":"2023-12-10T17:05:59.103Z","dependency_job_id":"0e33c5b2-95ec-46a3-963a-74f22a21cdee","html_url":"https://github.com/ronin-rb/ronin-db-activerecord","commit_stats":{"total_commits":359,"total_committers":2,"mean_commits":179.5,"dds":0.02506963788300831,"last_synced_commit":"4b34d25b0130243a058e1398a92c1f0c7bb52dce"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin-db-activerecord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin-db-activerecord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin-db-activerecord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin-db-activerecord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ronin-rb","download_url":"https://codeload.github.com/ronin-rb/ronin-db-activerecord/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235426492,"owners_count":18988420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["activerecord","activerecord-models","database","infosec","recon","ruby","security"],"created_at":"2024-11-06T07:03:04.545Z","updated_at":"2025-04-30T12:35:07.485Z","avatar_url":"https://github.com/ronin-rb.png","language":"Ruby","funding_links":["https://opencollective.com/ronin-rb","https://patreon.com/roninrb"],"categories":[],"sub_categories":[],"readme":"# ronin-db-activerecord\n\n[![CI](https://github.com/ronin-rb/ronin-db-activerecord/actions/workflows/ruby.yml/badge.svg)](https://github.com/ronin-rb/ronin-db-activerecord/actions/workflows/ruby.yml)\n[![Code Climate](https://codeclimate.com/github/ronin-rb/ronin-db-activerecord.svg)](https://codeclimate.com/github/ronin-rb/ronin-db-activerecord)\n[![Gem Version](https://badge.fury.io/rb/ronin-db-activerecord.svg)](https://badge.fury.io/rb/ronin-db-activerecord)\n\n* [Website](https://ronin-rb.dev/)\n* [Source](https://github.com/ronin-rb/ronin-db-activerecord)\n* [Issues](https://github.com/ronin-rb/ronin-db-activerecord/issues)\n* [Documentation](https://ronin-rb.dev/docs/ronin-db-activerecord/frames)\n* [Discord](https://discord.gg/6WAb3PsVX9) |\n  [Mastodon](https://infosec.exchange/@ronin_rb)\n\n## Description\n\nronin-db-activerecord contains [ActiveRecord] models and migrations for the\n[Ronin Database][ronin-db]. Provides database models storing and querying\nnetwork data, advisory data, credentials, and OSINT data.\n\n## Features\n\n* Can be used both as a standalone library or in a web app.\n* Provides common [ActiveRecord] models:\n  * [Ronin::DB::Advisory]\n  * [Ronin::DB::Arch]\n  * [Ronin::DB::ASN]\n  * [Ronin::DB::Cert]\n  * [Ronin::DB::CertIssuer]\n  * [Ronin::DB::CertName]\n  * [Ronin::DB::CertSubject]\n  * [Ronin::DB::CertSubjectAltName]\n  * [Ronin::DB::DNSQuery]\n  * [Ronin::DB::DNSRecord]\n  * [Ronin::DB::EmailAddress]\n  * [Ronin::DB::HostName]\n  * [Ronin::DB::HostNameIPAddress]\n  * [Ronin::DB::HTTPHeaderName]\n  * [Ronin::DB::HTTPQueryParam]\n  * [Ronin::DB::HTTPQueryParamName]\n  * [Ronin::DB::HTTPRequest]\n  * [Ronin::DB::HTTPRequestHeader]\n  * [Ronin::DB::HTTPResponse]\n  * [Ronin::DB::HTTPResponseHeader]\n  * [Ronin::DB::IPAddress]\n  * [Ronin::DB::IPAddressMACAddress]\n  * [Ronin::DB::MACAddress]\n  * [Ronin::DB::Note]\n  * [Ronin::DB::OpenPort]\n  * [Ronin::DB::Organization]\n  * [Ronin::DB::OrganizationCustomer]\n  * [Ronin::DB::OrganizationDepartment]\n  * [Ronin::DB::OrganizationEmailAddress]\n  * [Ronin::DB::OrganizationHostName]\n  * [Ronin::DB::OrganizationIPAddress]\n  * [Ronin::DB::OrganizationMember]\n  * [Ronin::DB::OrganizationPhoneNumber]\n  * [Ronin::DB::OrganizationStreetAddress]\n  * [Ronin::DB::OS]\n  * [Ronin::DB::OSGuess]\n  * [Ronin::DB::Password]\n  * [Ronin::DB::Person]\n  * [Ronin::DB::PersonalConnection]\n  * [Ronin::DB::PersonalEmailAddress]\n  * [Ronin::DB::PersonalPhoneNumber]\n  * [Ronin::DB::PersonalStreetAddress]\n  * [Ronin::DB::PhoneNumber]\n  * [Ronin::DB::Port]\n  * [Ronin::DB::Service]\n  * [Ronin::DB::ServiceCredential]\n  * [Ronin::DB::Software]\n  * [Ronin::DB::SoftwareVendor]\n  * [Ronin::DB::StreetAddress]\n  * [Ronin::DB::URL]\n  * [Ronin::DB::URLQueryParam]\n  * [Ronin::DB::URLQueryParamName]\n  * [Ronin::DB::URLScheme]\n  * [Ronin::DB::UserName]\n  * [Ronin::DB::Vulnerability]\n  * [Ronin::DB::WebVuln]\n  * [Ronin::DB::WebCredential]\n* Has 98% documentation coverage.\n* Has 99% test coverage.\n\n[Ronin::DB::Advisory]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Advisory.html\n[Ronin::DB::Arch]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Arch.html\n[Ronin::DB::ASN]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/ASN.html\n[Ronin::DB::Cert]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Cert.html\n[Ronin::DB::CertIssuer]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/CertIssuer.html\n[Ronin::DB::CertName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/CertName.html\n[Ronin::DB::CertSubject]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/CertSubject.html\n[Ronin::DB::CertSubjectAltName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/CertSubjectAltName.html\n[Ronin::DB::DNSQuery]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/DNSQuery.html\n[Ronin::DB::DNSRecord]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/DNSRecord.html\n[Ronin::DB::EmailAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/EmailAddress.html\n[Ronin::DB::HostName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HostName.html\n[Ronin::DB::HostNameIPAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HostNameIPAddress.html\n[Ronin::DB::HTTPHeaderName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPHeaderName.html\n[Ronin::DB::HTTPQueryParam]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPQueryParam.html\n[Ronin::DB::HTTPQueryParamName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPQueryParamName.html\n[Ronin::DB::HTTPRequest]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPRequest.html\n[Ronin::DB::HTTPRequestHeader]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPRequestHeader.html\n[Ronin::DB::HTTPResponse]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPResponse.html\n[Ronin::DB::HTTPResponseHeader]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/HTTPResponseHeader.html\n[Ronin::DB::IPAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/IPAddress.html\n[Ronin::DB::IPAddressMACAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/IPAddressMACAddress.html\n[Ronin::DB::MACAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/MACAddress.html\n[Ronin::DB::Note]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Note.html\n[Ronin::DB::OpenPort]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OpenPort.html\n[Ronin::DB::Organization]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Organization.html\n[Ronin::DB::OrganizationCustomer]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationCustomer.html\n[Ronin::DB::OrganizationDepartment]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationDepartment.html\n[Ronin::DB::OrganizationEmailAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationEmailAddress.html\n[Ronin::DB::OrganizationHostName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationHostName.html\n[Ronin::DB::OrganizationIPAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationIPAddress.html\n[Ronin::DB::OrganizationMember]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationMember.html\n[Ronin::DB::OrganizationPhoneNumber]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationPhoneNumber.html\n[Ronin::DB::OrganizationStreetAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OrganizationStreetAddress.html\n[Ronin::DB::OS]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OS.html\n[Ronin::DB::OSGuess]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/OSGuess.html\n[Ronin::DB::Password]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Password.html\n[Ronin::DB::Person]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Person.html\n[Ronin::DB::PersonalConnection]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/PersonalConnection.html\n[Ronin::DB::PersonalEmailAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/PersonalEmailAddress.html\n[Ronin::DB::PersonalPhoneNumber]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/PersonalPhoneNumber.html\n[Ronin::DB::PersonalStreetAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/PersonalStreetAddress.html\n[Ronin::DB::PhoneNumber]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/PhoneNumber.html\n[Ronin::DB::Port]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Port.html\n[Ronin::DB::Service]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Service.html\n[Ronin::DB::ServiceCredential]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/ServiceCredential.html\n[Ronin::DB::Software]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Software.html\n[Ronin::DB::SoftwareVendor]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/SoftwareVendor.html\n[Ronin::DB::StreetAddress]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/StreetAddress.html\n[Ronin::DB::URL]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/URL.html\n[Ronin::DB::URLQueryParam]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/URLQueryParam.html\n[Ronin::DB::URLQueryParamName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/URLQueryParamName.html\n[Ronin::DB::URLScheme]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/URLScheme.html\n[Ronin::DB::UserName]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/UserName.html\n[Ronin::DB::Vulnerability]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/Vulnerability.html\n[Ronin::DB::WebVuln]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/WebVuln.html\n[Ronin::DB::WebCredential]: https://ronin-rb.dev/docs/ronin-db-activerecord/Ronin/DB/WebCredential.html\n\n## Examples\n\nCreate a database:\n\n```ruby\nrequire 'ronin/db/migrations'\n\nActiveRecord::Base.establish_connection(\n  adapter: 'sqlite3',\n  database: 'path/to/db.sqlite3'\n)\n\nRonin::DB::Migrations.up\n```\n\nConnect to the database:\n\n```ruby\nActiveRecord::Base.establish_connection(\n  adapter: 'sqlite3',\n  database: 'path/to/db.sqlite3'\n)\n\nrequire 'ronin/db/models'\nRonin::DB::Models.connect\n```\n\n## Requirements\n\n* [Ruby] \u003e= 3.0.0\n* [activerecord] ~\u003e 7.0\n\n## Install\n\n```shell\n$ gem install ronin-db-activerecord\n```\n\n### Gemfile\n\n```ruby\ngem 'ronin-db-activerecord', '~\u003e 0.1'\n```\n\n### gemspec\n\n```ruby\ngem.add_dependency 'ronin-db-activerecord', '~\u003e 0.1'\n```\n\n## Development\n\n1. [Fork It!](https://github.com/ronin-rb/ronin-db-activerecord/fork)\n2. Clone It!\n3. `cd ronin-db-activerecord/`\n4. `bundle install`\n5. `git checkout -b my_feature`\n6. Code It!\n7. `bundle exec rake spec`\n8. `git push origin my_feature`\n\nIf you want to test your changes locally, run `rake db:console` to start a\nlocal database console.\n\n## License\n\nCopyright (c) 2022-2025 Hal Brodigan (postmodern.mod3@gmail.com)\n\nronin-db-activerecord is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published\nby the Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nronin-db-activerecord is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with ronin-db-activerecord.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n[Ruby]: https://www.ruby-lang.org\n[ActiveRecord]: https://guides.rubyonrails.org/active_record_basics.html\n[activerecord]: https://github.com/rails/rails/tree/main/activerecord#readme\n[ronin-db]: https://github.com/ronin-rb/ronin-db#readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronin-rb%2Fronin-db-activerecord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronin-rb%2Fronin-db-activerecord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronin-rb%2Fronin-db-activerecord/lists"}