usage_credits 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fcda02fd1ae61887b8a80d6fbf6c864843d363797d90dbbd66abafe2851ce8b
4
- data.tar.gz: 6c1e67ec12f46bf5e33faa7d02ed723dc47926a29948a8140706392d1ffbe024
3
+ metadata.gz: 42e2dcff2633bf14d2390d436ab14f724fb1142bc6de5adf2b410ab36e13b785
4
+ data.tar.gz: fef29f9815fa2cb241ed30c342083f98003a607b9b6c95dfd1d86ed1df7a5753
5
5
  SHA512:
6
- metadata.gz: cd9d8517d94b2c19d0b141d9b47f4362c65ee1bf9255bff400c2b55c34b14a87903cdd3f58987e92edad8c2116fbfe485f185ddc2e9696782ae912fc7f40402c
7
- data.tar.gz: b9498add88988145a75e74abbdf24b086391fd76188d63719a108a97f4b1fa69af86d9ea9c941cdd45ac25a2d1e5319192b14d34361a2ea42058db333f6adb0e
6
+ metadata.gz: 59be8e233c0a004cc6ab205a5f80aa2c17ce38d64df2b7bd99f2521ab9a185779c309ca376b5ceee684420c27d1fe3111907aa5c26c52f3c96c2dba50187895f
7
+ data.tar.gz: 22cdd9089c33e9d50ecf598442d6aff6acd4924662542951e81eebbc3657d6300b8c66a746290aae6339b922d2ef7ef83caa097113aa3876a19cb3265c4ee0c4
data/Appraisals CHANGED
@@ -1,25 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Test against Pay 8.3.x (minimum supported version)
3
+ # Test minimum supported Rails version (with latest Pay)
4
+ appraise "rails-7.2" do
5
+ gem "rails", "~> 7.2.0"
6
+ gem "pay", "~> 11.0"
7
+ gem "stripe", "~> 18.0"
8
+ end
9
+
10
+ # Test latest Rails version (with latest Pay) - this is the default/main Gemfile anyway
11
+ appraise "rails-8.1" do
12
+ gem "rails", "~> 8.1.0"
13
+ gem "pay", "~> 11.0"
14
+ gem "stripe", "~> 18.0"
15
+ end
16
+
17
+ # Test minimum supported Pay version (with latest Rails)
4
18
  appraise "pay-8.3" do
5
19
  gem "pay", "~> 8.3.0"
6
20
  gem "stripe", "~> 13.0"
21
+ gem "rails", "~> 8.1.0"
7
22
  end
8
23
 
9
- # Test against Pay 9.0.x (current recommended version)
24
+ # Test Pay 9.0 (popular stable version with latest Rails)
10
25
  appraise "pay-9.0" do
11
26
  gem "pay", "~> 9.0.0"
12
27
  gem "stripe", "~> 13.0"
28
+ gem "rails", "~> 8.1.0"
13
29
  end
14
30
 
15
- # Test against Pay 10.x (newly supported version)
31
+ # Test Pay 10.0 (with latest Rails)
16
32
  appraise "pay-10.0" do
17
33
  gem "pay", "~> 10.0.0"
18
34
  gem "stripe", "~> 15.0"
35
+ gem "rails", "~> 8.1.0"
19
36
  end
20
37
 
21
- # Test against Pay 11.x (latest version)
38
+ # Test latest Pay version (with latest Rails)
22
39
  appraise "pay-11.0" do
23
40
  gem "pay", "~> 11.0"
24
41
  gem "stripe", "~> 18.0"
42
+ gem "rails", "~> 8.1.0"
25
43
  end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.2.1] - 2026-01-15
2
+
3
+ - Add custom `create_checkout_session` options (like `success_url`) to credit pack purchases by @yshmarov in https://github.com/rameerez/usage_credits/pull/5
4
+
1
5
  ## [0.2.0] - 2025-12-29
2
6
 
3
7
  - Add Claude Code GitHub Workflow by @rameerez in https://github.com/rameerez/usage_credits/pull/14
data/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # 💳✨ `usage_credits` - Add usage-based credits to your Rails app
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/usage_credits.svg?v=0.1)](https://badge.fury.io/rb/usage_credits?v=0.1)
3
+ [![Gem Version](https://badge.fury.io/rb/usage_credits.svg)](https://badge.fury.io/rb/usage_credits) [![Build Status](https://github.com/rameerez/usage_credits/workflows/Tests/badge.svg)](https://github.com/rameerez/usage_credits/actions)
4
4
 
5
- Allow your users to have in-app credits / tokens they can use to perform operations.
5
+ > [!TIP]
6
+ > **🚀 Ship your next Rails app 10x faster!** I've built **[RailsFast](https://railsfast.com)**, a production-ready Rails boilerplate template that comes with everything you need to launch a software business in days, not weeks.
7
+
8
+ `usage_credits` allows your users to have in-app credits / tokens they can use to perform operations.
6
9
 
7
10
  ✨ Perfect for SaaS, AI apps, games, and API products that want to implement usage-based pricing.
8
11
 
@@ -2,28 +2,40 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal"
6
- gem "mocha"
7
- gem "simplecov", require: false
8
- gem "standard"
9
- gem "vcr"
10
- gem "webmock"
11
- gem "braintree", ">= 2.92.0"
12
- gem "lemonsqueezy", "~> 1.0"
13
- gem "paddle", "~> 2.6"
14
- gem "stripe", "~> 15.0"
15
- gem "prawn"
16
- gem "receipts"
17
- gem "sqlite3"
18
- gem "pg"
19
- gem "bootsnap", require: false
20
- gem "puma"
21
- gem "web-console", group: :development
22
- gem "importmap-rails"
23
- gem "sprockets-rails"
24
- gem "stimulus-rails"
25
- gem "turbo-rails"
26
- gem "rdoc", ">= 7.0"
5
+ gem "rake", "~> 13.0"
27
6
  gem "pay", "~> 10.0.0"
7
+ gem "stripe", "~> 15.0"
8
+ gem "rails", "~> 8.1.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
28
40
 
29
41
  gemspec path: "../"
@@ -2,28 +2,40 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal"
6
- gem "mocha"
7
- gem "simplecov", require: false
8
- gem "standard"
9
- gem "vcr"
10
- gem "webmock"
11
- gem "braintree", ">= 2.92.0"
12
- gem "lemonsqueezy", "~> 1.0"
13
- gem "paddle", "~> 2.6"
14
- gem "stripe", "~> 18.0"
15
- gem "prawn"
16
- gem "receipts"
17
- gem "sqlite3"
18
- gem "pg"
19
- gem "bootsnap", require: false
20
- gem "puma"
21
- gem "web-console", group: :development
22
- gem "importmap-rails"
23
- gem "sprockets-rails"
24
- gem "stimulus-rails"
25
- gem "turbo-rails"
26
- gem "rdoc", ">= 7.0"
5
+ gem "rake", "~> 13.0"
27
6
  gem "pay", "~> 11.0"
7
+ gem "stripe", "~> 18.0"
8
+ gem "rails", "~> 8.1.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
28
40
 
29
41
  gemspec path: "../"
@@ -2,28 +2,40 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal"
6
- gem "mocha"
7
- gem "simplecov", require: false
8
- gem "standard"
9
- gem "vcr"
10
- gem "webmock"
11
- gem "braintree", ">= 2.92.0"
12
- gem "lemonsqueezy", "~> 1.0"
13
- gem "paddle", "~> 2.6"
14
- gem "stripe", "~> 13.0"
15
- gem "prawn"
16
- gem "receipts"
17
- gem "sqlite3"
18
- gem "pg"
19
- gem "bootsnap", require: false
20
- gem "puma"
21
- gem "web-console", group: :development
22
- gem "importmap-rails"
23
- gem "sprockets-rails"
24
- gem "stimulus-rails"
25
- gem "turbo-rails"
26
- gem "rdoc", ">= 7.0"
5
+ gem "rake", "~> 13.0"
27
6
  gem "pay", "~> 8.3.0"
7
+ gem "stripe", "~> 13.0"
8
+ gem "rails", "~> 8.1.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
28
40
 
29
41
  gemspec path: "../"
@@ -2,28 +2,40 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal"
6
- gem "mocha"
7
- gem "simplecov", require: false
8
- gem "standard"
9
- gem "vcr"
10
- gem "webmock"
11
- gem "braintree", ">= 2.92.0"
12
- gem "lemonsqueezy", "~> 1.0"
13
- gem "paddle", "~> 2.6"
14
- gem "stripe", "~> 13.0"
15
- gem "prawn"
16
- gem "receipts"
17
- gem "sqlite3"
18
- gem "pg"
19
- gem "bootsnap", require: false
20
- gem "puma"
21
- gem "web-console", group: :development
22
- gem "importmap-rails"
23
- gem "sprockets-rails"
24
- gem "stimulus-rails"
25
- gem "turbo-rails"
26
- gem "rdoc", ">= 7.0"
5
+ gem "rake", "~> 13.0"
27
6
  gem "pay", "~> 9.0.0"
7
+ gem "stripe", "~> 13.0"
8
+ gem "rails", "~> 8.1.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
28
40
 
29
41
  gemspec path: "../"
@@ -0,0 +1,41 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rails", "~> 7.2.0"
7
+ gem "pay", "~> 11.0"
8
+ gem "stripe", "~> 18.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
40
+
41
+ gemspec path: "../"
@@ -0,0 +1,41 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rails", "~> 8.1.0"
7
+ gem "pay", "~> 11.0"
8
+ gem "stripe", "~> 18.0"
9
+
10
+ group :development do
11
+ gem "appraisal"
12
+ gem "web-console"
13
+ gem "standard"
14
+ gem "rubocop", "~> 1.0"
15
+ gem "rubocop-minitest", "~> 0.35"
16
+ gem "rubocop-performance", "~> 1.0"
17
+ end
18
+
19
+ group :test do
20
+ gem "minitest", "~> 5.0"
21
+ gem "mocha"
22
+ gem "simplecov", require: false
23
+ gem "vcr"
24
+ gem "webmock"
25
+ gem "braintree", ">= 2.92.0"
26
+ gem "lemonsqueezy", "~> 1.0"
27
+ gem "paddle", "~> 2.6"
28
+ gem "prawn"
29
+ gem "receipts"
30
+ gem "sqlite3"
31
+ gem "pg"
32
+ gem "bootsnap", require: false
33
+ gem "puma"
34
+ gem "importmap-rails"
35
+ gem "sprockets-rails"
36
+ gem "stimulus-rails"
37
+ gem "turbo-rails"
38
+ gem "rdoc", ">= 7.0"
39
+ end
40
+
41
+ gemspec path: "../"
@@ -123,10 +123,56 @@ module UsageCredits
123
123
  # Payment Integration
124
124
  # =========================================
125
125
 
126
- # Create a Stripe Checkout session for this pack
127
- def create_checkout_session(user)
126
+ # Create a Stripe Checkout session for this pack.
127
+ #
128
+ # Accepts optional checkout options that are passed through to the payment processor.
129
+ # Common options include:
130
+ # - success_url: URL to redirect after successful payment
131
+ # - cancel_url: URL to redirect if customer cancels
132
+ # - allow_promotion_codes: Enable promotion code input (true/false)
133
+ # - locale: Checkout page locale (e.g., "en", "es", "fr")
134
+ # - customer_email: Pre-fill the customer's email
135
+ #
136
+ # Note: The following parameters are protected and cannot be overridden:
137
+ # - mode: Always "payment" for credit packs
138
+ # - line_items: Always the configured credit pack
139
+ #
140
+ # Custom metadata passed in options will be merged with (not replace) the
141
+ # base pack metadata required for credit fulfillment.
142
+ #
143
+ # @param user [Object] A user with a payment processor (via Pay gem)
144
+ # @param options [Hash] Additional checkout options passed to the payment processor
145
+ # @return [Object] The checkout session object
146
+ #
147
+ # @example Basic usage
148
+ # pack.create_checkout_session(current_user)
149
+ #
150
+ # @example With custom options
151
+ # pack.create_checkout_session(current_user,
152
+ # success_url: credits_url,
153
+ # cancel_url: pricing_url,
154
+ # allow_promotion_codes: true
155
+ # )
156
+ #
157
+ def create_checkout_session(user, **options)
128
158
  raise ArgumentError, "User must have a payment processor" unless user.respond_to?(:payment_processor) && user.payment_processor
129
159
 
160
+ # Merge custom metadata with base_metadata (base_metadata takes precedence for critical fields)
161
+ custom_metadata = options.delete(:metadata) || {}
162
+ merged_metadata = custom_metadata.merge(base_metadata)
163
+
164
+ # Handle payment_intent_data specially to preserve metadata
165
+ # We dup to avoid mutating the caller's original hash
166
+ custom_payment_intent_data = (options.delete(:payment_intent_data) || {}).dup
167
+ custom_pi_metadata = custom_payment_intent_data.delete(:metadata) || {}
168
+ merged_payment_intent_data = custom_payment_intent_data.merge(
169
+ metadata: custom_pi_metadata.merge(base_metadata)
170
+ )
171
+
172
+ # Remove protected parameters that could break credit fulfillment
173
+ options.delete(:mode)
174
+ options.delete(:line_items)
175
+
130
176
  user.payment_processor.checkout(
131
177
  mode: "payment",
132
178
  line_items: [{
@@ -140,8 +186,9 @@ module UsageCredits
140
186
  },
141
187
  quantity: 1
142
188
  }],
143
- payment_intent_data: { metadata: base_metadata },
144
- metadata: base_metadata
189
+ payment_intent_data: merged_payment_intent_data,
190
+ metadata: merged_metadata,
191
+ **options
145
192
  )
146
193
  end
147
194
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UsageCredits
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usage_credits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - rameerez
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-12-29 00:00:00.000000000 Z
10
+ date: 2026-01-15 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: pay
@@ -43,104 +43,6 @@ dependencies:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: '6.1'
46
- - !ruby/object:Gem::Dependency
47
- name: bundler
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '2.0'
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '2.0'
60
- - !ruby/object:Gem::Dependency
61
- name: rake
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '13.0'
67
- type: :development
68
- prerelease: false
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '13.0'
74
- - !ruby/object:Gem::Dependency
75
- name: minitest
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '5.0'
81
- type: :development
82
- prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '5.0'
88
- - !ruby/object:Gem::Dependency
89
- name: sqlite3
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '2.1'
95
- type: :development
96
- prerelease: false
97
- version_requirements: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '2.1'
102
- - !ruby/object:Gem::Dependency
103
- name: rubocop
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '1.0'
109
- type: :development
110
- prerelease: false
111
- version_requirements: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '1.0'
116
- - !ruby/object:Gem::Dependency
117
- name: rubocop-minitest
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '0.35'
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '0.35'
130
- - !ruby/object:Gem::Dependency
131
- name: rubocop-performance
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '1.0'
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '1.0'
144
46
  description: Add a usage-based credit system to your Rails app, easily. Let users
145
47
  buy and spend credits on usage-based actions. Refill Stripe subscriptions with credits,
146
48
  sell one-time booster credit packs, implement PAYG (pay-as-you-go) billing, award
@@ -166,6 +68,8 @@ files:
166
68
  - gemfiles/pay_11.0.gemfile
167
69
  - gemfiles/pay_8.3.gemfile
168
70
  - gemfiles/pay_9.0.gemfile
71
+ - gemfiles/rails_7.2.gemfile
72
+ - gemfiles/rails_8.1.gemfile
169
73
  - lib/generators/usage_credits/install_generator.rb
170
74
  - lib/generators/usage_credits/templates/create_usage_credits_tables.rb.erb
171
75
  - lib/generators/usage_credits/templates/initializer.rb