Contributing to printavo-ruby
Thank you for your interest in contributing! This guide covers setup, workflow,
and standards for working on printavo-ruby.
git clone https://github.com/scarver2/printavo-ruby.git
cd printavo-ruby
bundle installbundle exec rspecCoverage is tracked via SimpleCov. The minimum threshold is 90%. New code must include specs.
Guard watches for file changes and re-runs specs and RuboCop automatically:
bundle exec guardThis project uses RuboCop with the
rubocop-performance, rubocop-rake, and rubocop-rspec extensions.
bundle exec rubocop
bundle exec rubocop -a # auto-correct safe offensesIntegration tests use VCR to record and replay HTTP interactions. All cassettes must be sanitized before committing:
- Real email addresses →
customer@example.com - Real phone numbers →
555-867-5309 - Real customer names →
Acme Customer - API credentials are filtered automatically by
spec/support/vcr.rb
Use the A1Web demo Printavo account when recording new cassettes — never record against production TER data.
- Branch from
master - One feature / bug fix per PR
- All CI checks must pass (RSpec + RuboCop across Ruby 3.1–4.0)
- Write specs for any new code
- Update
docs/CHANGELOG.mdwith a summary of changes
Versions follow Semantic Versioning:
| Change type | Version part |
|---|---|
| Bug fix | PATCH (0.1.x) |
| New backward-compatible feature | MINOR (0.x.0) |
| Breaking API change | MAJOR (x.0.0) |
Bump lib/printavo/version.rb, update docs/CHANGELOG.md, then:
git commit -am "Release vX.Y.Z"
git tag vX.Y.Z
git push origin master --tagsGitHub Actions will build and push to RubyGems automatically on tag push.
©2026 Stan Carver II
