usage_credits 0.4.0 → 1.0.0
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 +4 -4
- data/CHANGELOG.md +72 -0
- data/README.md +246 -13
- data/lib/generators/usage_credits/install_generator.rb +9 -1
- data/lib/generators/usage_credits/templates/create_usage_credits_tables.rb.erb +65 -21
- data/lib/generators/usage_credits/templates/upgrade_usage_credits_to_wallets_core.rb.erb +602 -0
- data/lib/generators/usage_credits/upgrade_generator.rb +47 -0
- data/lib/usage_credits/callbacks.rb +9 -54
- data/lib/usage_credits/configuration.rb +43 -13
- data/lib/usage_credits/core_ext/numeric.rb +12 -16
- data/lib/usage_credits/cost/base.rb +1 -6
- data/lib/usage_credits/cost/compound.rb +3 -2
- data/lib/usage_credits/cost/fixed.rb +1 -2
- data/lib/usage_credits/cost/variable.rb +23 -8
- data/lib/usage_credits/engine.rb +8 -12
- data/lib/usage_credits/helpers/credit_calculator.rb +18 -0
- data/lib/usage_credits/helpers/credits_helper.rb +9 -11
- data/lib/usage_credits/helpers/period_parser.rb +31 -9
- data/lib/usage_credits/helpers/processor_metadata.rb +46 -0
- data/lib/usage_credits/jobs/fulfillment_job.rb +1 -1
- data/lib/usage_credits/models/allocation.rb +15 -20
- data/lib/usage_credits/models/concerns/has_wallet.rb +50 -27
- data/lib/usage_credits/models/concerns/pay_charge_extension.rb +184 -139
- data/lib/usage_credits/models/concerns/pay_subscription_extension.rb +490 -174
- data/lib/usage_credits/models/credit_pack.rb +34 -13
- data/lib/usage_credits/models/credit_subscription_plan.rb +36 -15
- data/lib/usage_credits/models/fulfillment.rb +23 -48
- data/lib/usage_credits/models/operation.rb +36 -28
- data/lib/usage_credits/models/transaction.rb +55 -152
- data/lib/usage_credits/models/transfer.rb +37 -0
- data/lib/usage_credits/models/wallet.rb +219 -314
- data/lib/usage_credits/railtie.rb +4 -13
- data/lib/usage_credits/services/fulfillment_service.rb +146 -22
- data/lib/usage_credits/subscription_terms.rb +131 -0
- data/lib/usage_credits/version.rb +1 -1
- data/lib/usage_credits.rb +16 -3
- metadata +33 -20
- data/.rubocop.yml +0 -8
- data/.simplecov +0 -48
- data/AGENTS.md +0 -5
- data/Appraisals +0 -43
- data/CLAUDE.md +0 -5
- data/Rakefile +0 -32
- data/gemfiles/pay_10.0.gemfile +0 -41
- data/gemfiles/pay_11.0.gemfile +0 -41
- data/gemfiles/pay_8.3.gemfile +0 -41
- data/gemfiles/pay_9.0.gemfile +0 -41
- data/gemfiles/rails_7.2.gemfile +0 -41
- data/gemfiles/rails_8.1.gemfile +0 -41
data/CLAUDE.md
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md
|
|
2
|
-
|
|
3
|
-
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
-
|
|
5
|
-
Please go ahead and read the full context for this project at `.cursor/rules/0-overview.mdc` and `.cursor/rules/1-quality.mdc` now. Also read the README for a good overview of the project.
|
data/Rakefile
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require "bundler/setup"
|
|
3
|
-
rescue LoadError
|
|
4
|
-
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
require "bundler/gem_tasks"
|
|
8
|
-
|
|
9
|
-
require "rdoc/task"
|
|
10
|
-
|
|
11
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
|
12
|
-
rdoc.rdoc_dir = "rdoc"
|
|
13
|
-
rdoc.title = "Pay"
|
|
14
|
-
rdoc.options << "--line-numbers"
|
|
15
|
-
rdoc.rdoc_files.include("README.md")
|
|
16
|
-
rdoc.rdoc_files.include("lib/**/*.rb")
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
|
20
|
-
load "rails/tasks/engine.rake"
|
|
21
|
-
|
|
22
|
-
load "rails/tasks/statistics.rake"
|
|
23
|
-
|
|
24
|
-
require "rake/testtask"
|
|
25
|
-
|
|
26
|
-
Rake::TestTask.new(:test) do |t|
|
|
27
|
-
t.libs << "test"
|
|
28
|
-
t.pattern = "test/**/*_test.rb"
|
|
29
|
-
t.verbose = false
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
task default: :test
|
data/gemfiles/pay_10.0.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rake", "~> 13.0"
|
|
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
|
|
40
|
-
|
|
41
|
-
gemspec path: "../"
|
data/gemfiles/pay_11.0.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rake", "~> 13.0"
|
|
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
|
|
40
|
-
|
|
41
|
-
gemspec path: "../"
|
data/gemfiles/pay_8.3.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rake", "~> 13.0"
|
|
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
|
|
40
|
-
|
|
41
|
-
gemspec path: "../"
|
data/gemfiles/pay_9.0.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rake", "~> 13.0"
|
|
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
|
|
40
|
-
|
|
41
|
-
gemspec path: "../"
|
data/gemfiles/rails_7.2.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
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: "../"
|
data/gemfiles/rails_8.1.gemfile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
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: "../"
|