usage_credits 0.5.0 → 1.0.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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +75 -0
  3. data/README.md +120 -29
  4. data/lib/generators/usage_credits/install_generator.rb +9 -1
  5. data/lib/generators/usage_credits/templates/create_usage_credits_tables.rb.erb +64 -20
  6. data/lib/generators/usage_credits/templates/upgrade_usage_credits_to_wallets_core.rb.erb +602 -0
  7. data/lib/generators/usage_credits/upgrade_generator.rb +47 -0
  8. data/lib/usage_credits/callbacks.rb +9 -54
  9. data/lib/usage_credits/configuration.rb +25 -13
  10. data/lib/usage_credits/core_ext/numeric.rb +12 -16
  11. data/lib/usage_credits/cost/base.rb +1 -6
  12. data/lib/usage_credits/cost/compound.rb +3 -2
  13. data/lib/usage_credits/cost/fixed.rb +1 -2
  14. data/lib/usage_credits/cost/variable.rb +23 -8
  15. data/lib/usage_credits/engine.rb +8 -12
  16. data/lib/usage_credits/helpers/credit_calculator.rb +18 -0
  17. data/lib/usage_credits/helpers/credits_helper.rb +9 -11
  18. data/lib/usage_credits/helpers/period_parser.rb +31 -9
  19. data/lib/usage_credits/helpers/processor_metadata.rb +46 -0
  20. data/lib/usage_credits/jobs/fulfillment_job.rb +1 -1
  21. data/lib/usage_credits/models/allocation.rb +15 -20
  22. data/lib/usage_credits/models/concerns/has_wallet.rb +50 -27
  23. data/lib/usage_credits/models/concerns/pay_charge_extension.rb +184 -139
  24. data/lib/usage_credits/models/concerns/pay_subscription_extension.rb +490 -174
  25. data/lib/usage_credits/models/credit_pack.rb +34 -13
  26. data/lib/usage_credits/models/credit_subscription_plan.rb +36 -15
  27. data/lib/usage_credits/models/fulfillment.rb +23 -48
  28. data/lib/usage_credits/models/operation.rb +36 -28
  29. data/lib/usage_credits/models/transaction.rb +51 -158
  30. data/lib/usage_credits/models/transfer.rb +37 -0
  31. data/lib/usage_credits/models/wallet.rb +224 -312
  32. data/lib/usage_credits/railtie.rb +4 -13
  33. data/lib/usage_credits/services/fulfillment_service.rb +146 -22
  34. data/lib/usage_credits/subscription_terms.rb +131 -0
  35. data/lib/usage_credits/version.rb +1 -1
  36. data/lib/usage_credits.rb +16 -3
  37. metadata +33 -20
  38. data/.rubocop.yml +0 -8
  39. data/.simplecov +0 -37
  40. data/AGENTS.md +0 -5
  41. data/Appraisals +0 -43
  42. data/CLAUDE.md +0 -5
  43. data/Rakefile +0 -32
  44. data/gemfiles/pay_10.0.gemfile +0 -41
  45. data/gemfiles/pay_11.0.gemfile +0 -41
  46. data/gemfiles/pay_8.3.gemfile +0 -41
  47. data/gemfiles/pay_9.0.gemfile +0 -41
  48. data/gemfiles/rails_7.2.gemfile +0 -41
  49. data/gemfiles/rails_8.1.gemfile +0 -41
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
@@ -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: "../"
@@ -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: "../"
@@ -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: "../"
@@ -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: "../"
@@ -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: "../"
@@ -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: "../"