-
Notifications
You must be signed in to change notification settings - Fork 4
Add Claude Code GitHub Workflow #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Code Review: Claude Code GitHub Workflow IntegrationI've reviewed PR #5 which adds Claude Code GitHub Actions workflows to the repository. Here's my feedback: ✅ Positive Changes1. Version Update (Critical)
2. Improved Configuration Structure
3. Clear Documentation
🔍 Code Quality & Best PracticesGeneral Structure: Good
Permissions: Appropriate
|
This comprehensive update adds Pay gem v10+ compatibility while maintaining backwards compatibility with Pay < 10, implements a complete test suite, and fixes 16 critical bugs related to MRR/ARR calculations and payment processor integrations. ## Major Changes ### 1. Pay v10+ Compatibility with Backwards Support - Add support for Pay v10+ `object` column (stores full Stripe objects) - Maintain backwards compatibility with Pay < 10 `data` column - Implement `subscription_data` helper that tries `object` first, falls back to `data` - Update all processors to use backwards-compatible data access patterns ### 2. Database-Agnostic JSON Querying - Create `Profitable::JsonHelpers` module for cross-database JSON extraction - Support PostgreSQL (9.3+), MySQL (5.7.9+), MariaDB (10.2.7+), SQLite (3.9.0+) - Auto-detect database adapter and use appropriate JSON syntax - Replace PostgreSQL-specific `->>` operator with database-agnostic queries ### 3. Comprehensive Test Suite (6,151 lines across 10 files) - Add 211 tests with 250 assertions covering all functionality - Create processor-specific tests (Stripe, Braintree, Paddle Billing, Paddle Classic) - Add 22 regression tests documenting and preventing all 10 critical bugs - Implement mock Pay models for standalone testing without Rails engine - Achieve 100% coverage of public API methods ### 4. Critical Bug Fixes (16 total) #### Pay v10+ Compatibility Issues (Bugs #1-4) - Fix: Check both `object` and `data` columns for subscription data - Fix: Support Stripe multi-item subscriptions (sum ALL items, not just first) - Fix: Support Paddle multi-item subscriptions - Fix: Check both `paid` and `status` fields in charge objects #### Calculation Accuracy Issues (Bugs #5-10) - Fix: Remove incorrect proration from new MRR calculation (MRR is a rate) - Fix: Remove incorrect proration from churned MRR calculation - Fix: Calculate historical MRR using temporal logic, not current status - Fix: Calculate churn using start-of-period subscribers (not current) - Fix: Use correct LTV formula: LTV = (MRR / active_subscribers) / churn_rate - Fix: Count new subscribers by subscription creation, not customer creation #### Edge Cases (Bugs #11-12) - Fix: Add guard clause for division by zero when MRR = 0 - Fix: Add guard clause for division by zero when interval_count = 0 #### Consistency Issues (Bug #13) - Fix: Ensure `normalize_to_monthly` always returns integer cents (not floats) #### Missing Functionality (Bugs #14-15) - Fix: Iterate and sum ALL Stripe subscription items (multi-item support) - Fix: Iterate and sum ALL Paddle subscription items (multi-item support) ### 5. Code Quality Improvements - Extract JSON helpers to DRY module (remove duplication) - Add comprehensive inline documentation - Improve error handling with graceful fallbacks - Add detailed comments explaining Pay v10+ compatibility strategy ## Testing - All 211 tests pass with 0 failures - Verified against official Stripe, Braintree, and Paddle API documentation - Tested backwards compatibility with Pay < 10 and Pay >= 10 structures - Validated database-agnostic queries work on SQLite (tests) ## Breaking Changes None. All changes are backwards compatible. ## Dependencies - Requires Pay gem >= 7.0.0 (already specified in gemspec) - Works with Pay 7.x, 8.x, 9.x, 10.x, 11.x - Supports PostgreSQL, MySQL, MariaDB, and SQLite databases 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
🤖 Installing Claude Code GitHub App
This PR adds a GitHub Actions workflow that enables Claude Code integration in our repository.
What is Claude Code?
Claude Code is an AI coding agent that can help with:
How it works
Once this PR is merged, we'll be able to interact with Claude by mentioning @claude in a pull request or issue comment.
Once the workflow is triggered, Claude will analyze the comment and surrounding context, and execute on the request in a GitHub action.
Important Notes
Security
There's more information in the Claude Code action repo.
After merging this PR, let's try mentioning @claude in a comment on any PR to get started!