{"id":28566815,"url":"https://github.com/salsify/avrolution","last_synced_at":"2026-01-20T16:31:03.883Z","repository":{"id":19469480,"uuid":"87080380","full_name":"salsify/avrolution","owner":"salsify","description":"Avro + evolution","archived":false,"fork":false,"pushed_at":"2024-01-05T13:00:30.000Z","size":52,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-11-30T00:21:02.211Z","etag":null,"topics":["avro","gem","hacktoberfest","schema-registry"],"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/salsify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-04-03T13:58:13.000Z","updated_at":"2025-11-06T13:14:38.000Z","dependencies_parsed_at":"2023-01-13T20:23:12.961Z","dependency_job_id":"e7cc67f8-5789-4e16-b976-5b8b013065e2","html_url":"https://github.com/salsify/avrolution","commit_stats":{"total_commits":29,"total_committers":8,"mean_commits":3.625,"dds":0.6551724137931034,"last_synced_commit":"20b0cfd5a551a822bc23167acc56435e308351b4"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/salsify/avrolution","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsify%2Favrolution","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsify%2Favrolution/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsify%2Favrolution/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsify%2Favrolution/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/salsify","download_url":"https://codeload.github.com/salsify/avrolution/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsify%2Favrolution/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avro","gem","hacktoberfest","schema-registry"],"created_at":"2025-06-10T15:39:09.239Z","updated_at":"2026-01-20T16:31:03.878Z","avatar_url":"https://github.com/salsify.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# avrolution\n\nSupport for the evolution of Avro schemas stored in a schema registry.\n\nThis gem provides utilities to help with the management of Avro JSON schemas in a\nschema registry. The compatibility of Avro JSON schema files can be checked\nagainst a registry. Expected compatibility breaks can also be declared.\n\n## Installation\n\nAdd this gem to your application's Gemfile, typically in a dev/test group:\n\n```ruby\ngroup :development, :test do\n  gem 'avrolution'\nend\n```\n\nAnd then execute:\n\n    $ bundle install\n\nOr install it yourself as:\n\n    $ gem install avrolution\n\nWithin a Rails project, create an `avro_compatibility_breaks.txt` file at\n`Rails.root` by running:\n\n    $ rails generate avrolution:install\n\n## Configuration\n\nThe gem supports the following configuration:\n\n* `root` - The directory to search for Avro JSON schemas (`.avsc`). This is also\n  the default location for the compatibility breaks file. In a Rails application,\n  `Avrolution.root` defaults to `Rails.root`.\n* `compatibility_breaks_file` - The path to the compability breaks file. Defaults\n  to `#{Avrolution}.root/avro_compatibility_breaks.txt`.\n* `compatibility_schema_registry_url` - The URL for the schema registry to use\n  for compatibility checking, or a Proc to determine the value.\n  `ENV['COMPATIBILITY_SCHEMA_REGISTRY_URL']` overrides this value if set.\n* `deployment_schema_registry_url` - The URL for the schema registry to use\n  when registering new schema version, or a Proc to determine the value.\n  `ENV['DEPLOYMENT_SCHEMA_REGISTRY_URL']` overrides this value if set.\n* `logger` - A logger used by the rake tasks in this gem. This does _NOT_ default\n  to `Rails.logger` in Rails applications.\n\n## Usage\n\n### Avro Compatibility Check Rake Task\n\nThere is a rake task to check the compatibility of all Avro JSON schemas under\n`Avrolution.root` against a schema registry.\n\nFor Rails applications, the `avro:check_compatibility` task is automatically\ndefined via a Railtie.\n\nThis task does not require any arguments. It checks the\ncompatibility of all unregistered Avro JSON schemas found recursively under `Avrolution.root`\nagainst the schema registry `ENV['COMPATIBILITY_SCHEMA_REGISTRY_URL']` or\n`Avroluion.compatibility_schema_registry_url`.\n\n```bash\nrake avro:check_compatibility\n```\n\nIf a schema is incompatible, then `Avrolution.compatibility_breaks_file` is also\nconsulted. If the schema is still incompatible with the last registered version\nthen the differences are displayed and the command to add a compatibility break\nis printed.\n\nFor non-Rails projects, tasks can be defined as:\n\n```ruby\nrequire 'avrolution/rake/check_compatibility_task'\nAvrolution::Rake::CheckCompatibilityTask.define\n```\n\n### Avro Register Schemas Rake Task\n\nThere is a rake task to register new schemas.\n\nFor Rails applications, the `avro:register_schemas` task is automatically\ndefined via a Railtie.\n\nThis rake task requires a comma-separated list of files for the schemas to register.\n\n```bash\nrake avro:register_schemas schemas=/app/avro/schemas/one.avsc,/app/avro/schema/two.avsc\n```\n\nSchemas are registered against the schema registry\n`ENV['DEPLOYMENT_SCHEMA_REGISTRY_URL']` or\n`Avroluion.deployment_schema_registry_url`.\n\nThe `Avrolution.compatibility_breaks_file` is consulted prior to registering the\nschema, and if an entry is found then the specified compatibility settings are\nused.\n\nFor non-Rails projects, tasks can be defined as:\n\n```ruby\nrequire 'avroluation/rake/register_schemas_task'\nAvrolution::Rake::RegisterSchemasTask.define\n```\n\n### Avro Register All Schemas Rake Task\n\nThis rake task allows you to register all schemas discovered under `Avrolution.root`.\n\nSimilarly to the task `avro:register_schemas`, it will register them against the configured\nregistry. Additionally, this task will be auto included for Rails applications.\n\n```bash\nrake avro:register_all_schemas\n```\n\nFor non-Rails projects, tasks can be defined as:\n\n```ruby\nrequire 'avroluation/rake/register_all_schemas_task'\nAvrolution::Rake::RegisterAllSchemasTask.define\n```\n\n### Avro Add Compatibility Break Rake Task\n\nThere is a rake task add an entry to the `Avrolution.compatibility_breaks_file`.\n\nThis rake task accepts the following arguments:\n* `name` - The full name of the Avro schema.\n* `fingerprint` - The Resolution fingerprint as a hex string.\n* `with_compatibility` - Optional compatibility level to use for the check and\n during registration.\n* `after_compatibility` - Optional compatibility level to set after registration.\n\n```bash\nrake avro:add_compatibility_break name=com.salsify.alerts.example_value \\\n  fingerprint=36a2035c15c1bbbfe895494697d1f760171d00ab4fd39d0616261bf6854374f9 \\\n  with_compatibility=BACKWARD after_compatibility=FULL\n```\n\nFor Rails applications, the `avro:add_compatibility_break` task is automatically\ndefined via a Railtie.\n\nFor non-Rails projects tasks can be defined as:\n\n```ruby\nrequire 'avrolution/rake/add_compatibility_break_task'\nAvrolution::Rake::AddCompatibilityBreakTask.define\n```\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then,\nrun `rake spec` to run the tests. You can also run `bin/console` for an\ninteractive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`. \n\nTo release a new version, update the version number in `version.rb`, and then\nrun `bundle exec rake release`, which will create a git tag for the version,\npush git commits and tags, and push the `.gem` file to\n[rubygems.org](https://rubygems.org).\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at\nhttps://github.com/salsify/avrolution.\n\n## License\n\nThe gem is available as open source under the terms of the\n[MIT License](http://opensource.org/licenses/MIT).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalsify%2Favrolution","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalsify%2Favrolution","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalsify%2Favrolution/lists"}