thumbjive-koudoku 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +198 -0
  4. data/Rakefile +10 -0
  5. data/app/assets/javascripts/koudoku/application.js +15 -0
  6. data/app/assets/stylesheets/koudoku/application.css +13 -0
  7. data/app/assets/stylesheets/koudoku/pricing-table.scss +78 -0
  8. data/app/concerns/koudoku/coupon.rb +7 -0
  9. data/app/concerns/koudoku/plan.rb +14 -0
  10. data/app/concerns/koudoku/subscription.rb +255 -0
  11. data/app/controllers/koudoku/application_controller.rb +7 -0
  12. data/app/controllers/koudoku/subscriptions_controller.rb +181 -0
  13. data/app/helpers/koudoku/application_helper.rb +20 -0
  14. data/app/views/koudoku/subscriptions/_card.html.erb +99 -0
  15. data/app/views/koudoku/subscriptions/_pricing_table.html.erb +40 -0
  16. data/app/views/koudoku/subscriptions/_social_proof.html.erb +11 -0
  17. data/app/views/koudoku/subscriptions/_stripe_js.html.erb +0 -0
  18. data/app/views/koudoku/subscriptions/edit.html.erb +7 -0
  19. data/app/views/koudoku/subscriptions/index.html.erb +2 -0
  20. data/app/views/koudoku/subscriptions/new.html.erb +1 -0
  21. data/app/views/koudoku/subscriptions/show.html.erb +15 -0
  22. data/app/views/koudoku/subscriptions/unauthorized.html.erb +1 -0
  23. data/app/views/layouts/koudoku/application.html.erb +14 -0
  24. data/config/environment.rb +0 -0
  25. data/config/initializers/stripe_event.rb +27 -0
  26. data/config/locales/en.yml +58 -0
  27. data/config/locales/pt-BR.yml +57 -0
  28. data/config/routes.rb +14 -0
  29. data/lib/generators/koudoku/install_generator.rb +74 -0
  30. data/lib/generators/koudoku/templates/app/models/coupon.rb +5 -0
  31. data/lib/generators/koudoku/templates/app/models/plan.rb +6 -0
  32. data/lib/generators/koudoku/templates/app/models/subscription.rb +8 -0
  33. data/lib/generators/koudoku/templates/config/initializers/koudoku.rb +18 -0
  34. data/lib/generators/koudoku/views_generator.rb +31 -0
  35. data/lib/koudoku-tj.rb +0 -0
  36. data/lib/koudoku.rb +84 -0
  37. data/lib/koudoku/engine.rb +20 -0
  38. data/lib/koudoku/errors.rb +4 -0
  39. data/lib/koudoku/version.rb +3 -0
  40. data/lib/tasks/koudoku_tasks.rake +12 -0
  41. data/spec/concerns/koudoku/plan_spec.rb +39 -0
  42. data/spec/concerns/koudoku/subscription_spec.rb +0 -0
  43. data/spec/controllers/koudoku/subscriptions_controller.rb +21 -0
  44. data/spec/dummy/README.rdoc +261 -0
  45. data/spec/dummy/Rakefile +7 -0
  46. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  47. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  48. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  49. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  50. data/spec/dummy/app/models/coupon.rb +3 -0
  51. data/spec/dummy/app/models/customer.rb +6 -0
  52. data/spec/dummy/app/models/plan.rb +8 -0
  53. data/spec/dummy/app/models/subscription.rb +7 -0
  54. data/spec/dummy/app/views/koudoku/subscriptions/_social_proof.html.erb +11 -0
  55. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  56. data/spec/dummy/config.ru +4 -0
  57. data/spec/dummy/config/application.rb +55 -0
  58. data/spec/dummy/config/boot.rb +10 -0
  59. data/spec/dummy/config/database.yml +25 -0
  60. data/spec/dummy/config/environment.rb +5 -0
  61. data/spec/dummy/config/environments/development.rb +32 -0
  62. data/spec/dummy/config/environments/production.rb +69 -0
  63. data/spec/dummy/config/environments/test.rb +36 -0
  64. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/spec/dummy/config/initializers/devise.rb +0 -0
  66. data/spec/dummy/config/initializers/inflections.rb +15 -0
  67. data/spec/dummy/config/initializers/koudoku.rb +7 -0
  68. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  69. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  70. data/spec/dummy/config/initializers/session_store.rb +8 -0
  71. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  72. data/spec/dummy/config/locales/devise.en.yml +59 -0
  73. data/spec/dummy/config/locales/en.yml +5 -0
  74. data/spec/dummy/config/routes.rb +6 -0
  75. data/spec/dummy/db/migrate/20130318201927_create_customers.rb +8 -0
  76. data/spec/dummy/db/migrate/20130318204455_create_subscriptions.rb +16 -0
  77. data/spec/dummy/db/migrate/20130318204458_create_plans.rb +14 -0
  78. data/spec/dummy/db/migrate/20130318204502_create_coupons.rb +10 -0
  79. data/spec/dummy/db/migrate/20130520163946_add_interval_to_plan.rb +5 -0
  80. data/spec/dummy/db/schema.rb +53 -0
  81. data/spec/dummy/db/test.sqlite3 +0 -0
  82. data/spec/dummy/log/test.log +80 -0
  83. data/spec/dummy/public/404.html +26 -0
  84. data/spec/dummy/public/422.html +26 -0
  85. data/spec/dummy/public/500.html +25 -0
  86. data/spec/dummy/public/favicon.ico +0 -0
  87. data/spec/dummy/script/rails +6 -0
  88. data/spec/dummy/test/fixtures/customers.yml +7 -0
  89. data/spec/dummy/test/unit/customer_test.rb +7 -0
  90. data/spec/helpers/koudoku/application_helper_spec.rb +29 -0
  91. data/spec/spec_helper.rb +30 -0
  92. metadata +332 -0
Binary file
@@ -0,0 +1,80 @@
1
+  (0.1ms) DROP TABLE IF EXISTS "coupons"
2
+  (0.1ms) SELECT sqlite_version(*)
3
+  (12.4ms) CREATE TABLE "coupons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "code" varchar, "free_trial_length" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
4
+  (0.2ms) DROP TABLE IF EXISTS "customers"
5
+  (13.1ms) CREATE TABLE "customers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
6
+  (0.2ms) DROP TABLE IF EXISTS "plans"
7
+  (13.4ms) CREATE TABLE "plans" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "stripe_id" varchar, "price" float, "features" text, "highlight" boolean, "display_order" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "interval" varchar)
8
+  (0.2ms) DROP TABLE IF EXISTS "subscriptions"
9
+  (12.9ms) CREATE TABLE "subscriptions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stripe_id" varchar, "plan_id" integer, "last_four" varchar, "coupon_id" integer, "card_type" varchar, "current_price" float, "customer_id" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
10
+  (13.6ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
11
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
12
+  (9.1ms) INSERT INTO "schema_migrations" (version) VALUES (20130520163946)
13
+  (18.3ms) INSERT INTO "schema_migrations" (version) VALUES
14
+ (20130318201927),
15
+ (20130318204455),
16
+ (20130318204502),
17
+ (20130318204458);
18
+
19
+ 
20
+  (23.7ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
21
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
22
+  (0.1ms) begin transaction
23
+ SQL (0.3ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "test"], ["created_at", "2017-11-08 00:29:35.888888"], ["updated_at", "2017-11-08 00:29:35.888888"]]
24
+  (15.7ms) commit transaction
25
+ ActiveRecord::InternalMetadata Load (0.1ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
26
+  (0.1ms) begin transaction
27
+  (0.1ms) commit transaction
28
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
29
+  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
30
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
31
+  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
32
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
33
+  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
34
+  (0.1ms) DROP TABLE IF EXISTS "coupons"
35
+  (0.1ms) SELECT sqlite_version(*)
36
+  (23.4ms) CREATE TABLE "coupons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "code" varchar, "free_trial_length" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
37
+  (0.2ms) DROP TABLE IF EXISTS "customers"
38
+  (23.4ms) CREATE TABLE "customers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
39
+  (0.2ms) DROP TABLE IF EXISTS "plans"
40
+  (26.3ms) CREATE TABLE "plans" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "stripe_id" varchar, "price" float, "features" text, "highlight" boolean, "display_order" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "interval" varchar)
41
+  (0.2ms) DROP TABLE IF EXISTS "subscriptions"
42
+  (22.4ms) CREATE TABLE "subscriptions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stripe_id" varchar, "plan_id" integer, "last_four" varchar, "coupon_id" integer, "card_type" varchar, "current_price" float, "customer_id" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
43
+  (23.3ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
44
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
45
+  (15.3ms) INSERT INTO "schema_migrations" (version) VALUES (20130520163946)
46
+  (16.9ms) INSERT INTO "schema_migrations" (version) VALUES
47
+ (20130318201927),
48
+ (20130318204455),
49
+ (20130318204502),
50
+ (20130318204458);
51
+
52
+ 
53
+  (18.5ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
54
+ ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
55
+  (0.1ms) begin transaction
56
+ SQL (0.3ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "test"], ["created_at", "2017-11-08 00:31:20.711815"], ["updated_at", "2017-11-08 00:31:20.711815"]]
57
+  (8.2ms) commit transaction
58
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
59
+  (0.1ms) begin transaction
60
+  (0.1ms) commit transaction
61
+  (0.0ms) begin transaction
62
+  (0.1ms) rollback transaction
63
+  (0.1ms) begin transaction
64
+  (0.0ms) rollback transaction
65
+  (0.0ms) begin transaction
66
+  (0.0ms) rollback transaction
67
+  (0.0ms) begin transaction
68
+  (0.0ms) rollback transaction
69
+  (0.1ms) begin transaction
70
+  (0.1ms) rollback transaction
71
+  (0.0ms) begin transaction
72
+  (0.0ms) rollback transaction
73
+  (0.0ms) begin transaction
74
+  (0.0ms) rollback transaction
75
+  (0.0ms) begin transaction
76
+  (0.0ms) rollback transaction
77
+  (0.0ms) begin transaction
78
+  (0.0ms) rollback transaction
79
+  (0.0ms) begin transaction
80
+  (0.0ms) rollback transaction
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ email: MyString
5
+
6
+ two:
7
+ email: MyString
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class CustomerTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+ describe Koudoku::ApplicationHelper, type: :helper do
3
+ describe "#plan_price" do
4
+ it "includes the price and defaults to monthly" do
5
+ plan = Plan.new(price: 12.34)
6
+ expect(helper.plan_price(plan)).to eq "$12.34/month"
7
+ end
8
+ it "supports monthly plans" do
9
+ plan = Plan.new(price: 12.34, interval: 'month')
10
+ expect(helper.plan_price(plan)).to eq "$12.34/month"
11
+ end
12
+ it "supports weekly plans" do
13
+ plan = Plan.new(price: 12.34, interval: 'week')
14
+ expect(helper.plan_price(plan)).to eq "$12.34/week"
15
+ end
16
+ it "supports annual plans" do
17
+ plan = Plan.new(price: 12.34, interval: 'year')
18
+ expect(helper.plan_price(plan)).to eq "$12.34/year"
19
+ end
20
+ it "supports semi-annual plans" do
21
+ plan = Plan.new(price: 12.34, interval: '6-month')
22
+ expect(helper.plan_price(plan)).to eq "$12.34/half-year"
23
+ end
24
+ it "supports quarterly plans" do
25
+ plan = Plan.new(price: 12.34, interval: '3-month')
26
+ expect(helper.plan_price(plan)).to eq "$12.34/quarter"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
3
+ require 'rspec/rails'
4
+ require 'factory_girl_rails'
5
+ require 'pry'
6
+ Rails.backtrace_cleaner.remove_silencers!
7
+ # Load support files
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
9
+ RSpec.configure do |config|
10
+ config.mock_with :rspec
11
+ config.use_transactional_fixtures = true
12
+ config.infer_base_class_for_anonymous_controllers = false
13
+ config.order = "random"
14
+ end
15
+
16
+ def raw_post(action, params, body)
17
+ @request.env['RAW_POST_DATA'] = body
18
+ response = post(action, params)
19
+ @request.env.delete('RAW_POST_DATA')
20
+ response
21
+ end
22
+
23
+ def webhooks_json(event, attributes = {})
24
+ {
25
+ 'type' => event,
26
+ 'data' => {
27
+ 'object' => attributes
28
+ }
29
+ }.to_json
30
+ end
metadata ADDED
@@ -0,0 +1,332 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thumbjive-koudoku
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Culver
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-11-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: stripe
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: stripe_event
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bluecloth
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jquery-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 3.0.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 3.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: capybara
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: factory_girl_rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Robust subscription support for Rails with Stripe. Provides package levels,
154
+ coupons, logging, notifications, etc.
155
+ email:
156
+ - andrew.culver@gmail.com
157
+ executables: []
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - MIT-LICENSE
162
+ - README.md
163
+ - Rakefile
164
+ - app/assets/javascripts/koudoku/application.js
165
+ - app/assets/stylesheets/koudoku/application.css
166
+ - app/assets/stylesheets/koudoku/pricing-table.scss
167
+ - app/concerns/koudoku/coupon.rb
168
+ - app/concerns/koudoku/plan.rb
169
+ - app/concerns/koudoku/subscription.rb
170
+ - app/controllers/koudoku/application_controller.rb
171
+ - app/controllers/koudoku/subscriptions_controller.rb
172
+ - app/helpers/koudoku/application_helper.rb
173
+ - app/views/koudoku/subscriptions/_card.html.erb
174
+ - app/views/koudoku/subscriptions/_pricing_table.html.erb
175
+ - app/views/koudoku/subscriptions/_social_proof.html.erb
176
+ - app/views/koudoku/subscriptions/_stripe_js.html.erb
177
+ - app/views/koudoku/subscriptions/edit.html.erb
178
+ - app/views/koudoku/subscriptions/index.html.erb
179
+ - app/views/koudoku/subscriptions/new.html.erb
180
+ - app/views/koudoku/subscriptions/show.html.erb
181
+ - app/views/koudoku/subscriptions/unauthorized.html.erb
182
+ - app/views/layouts/koudoku/application.html.erb
183
+ - config/environment.rb
184
+ - config/initializers/stripe_event.rb
185
+ - config/locales/en.yml
186
+ - config/locales/pt-BR.yml
187
+ - config/routes.rb
188
+ - lib/generators/koudoku/install_generator.rb
189
+ - lib/generators/koudoku/templates/app/models/coupon.rb
190
+ - lib/generators/koudoku/templates/app/models/plan.rb
191
+ - lib/generators/koudoku/templates/app/models/subscription.rb
192
+ - lib/generators/koudoku/templates/config/initializers/koudoku.rb
193
+ - lib/generators/koudoku/views_generator.rb
194
+ - lib/koudoku-tj.rb
195
+ - lib/koudoku.rb
196
+ - lib/koudoku/engine.rb
197
+ - lib/koudoku/errors.rb
198
+ - lib/koudoku/version.rb
199
+ - lib/tasks/koudoku_tasks.rake
200
+ - spec/concerns/koudoku/plan_spec.rb
201
+ - spec/concerns/koudoku/subscription_spec.rb
202
+ - spec/controllers/koudoku/subscriptions_controller.rb
203
+ - spec/dummy/README.rdoc
204
+ - spec/dummy/Rakefile
205
+ - spec/dummy/app/assets/javascripts/application.js
206
+ - spec/dummy/app/assets/stylesheets/application.css
207
+ - spec/dummy/app/controllers/application_controller.rb
208
+ - spec/dummy/app/helpers/application_helper.rb
209
+ - spec/dummy/app/models/coupon.rb
210
+ - spec/dummy/app/models/customer.rb
211
+ - spec/dummy/app/models/plan.rb
212
+ - spec/dummy/app/models/subscription.rb
213
+ - spec/dummy/app/views/koudoku/subscriptions/_social_proof.html.erb
214
+ - spec/dummy/app/views/layouts/application.html.erb
215
+ - spec/dummy/config.ru
216
+ - spec/dummy/config/application.rb
217
+ - spec/dummy/config/boot.rb
218
+ - spec/dummy/config/database.yml
219
+ - spec/dummy/config/environment.rb
220
+ - spec/dummy/config/environments/development.rb
221
+ - spec/dummy/config/environments/production.rb
222
+ - spec/dummy/config/environments/test.rb
223
+ - spec/dummy/config/initializers/backtrace_silencers.rb
224
+ - spec/dummy/config/initializers/devise.rb
225
+ - spec/dummy/config/initializers/inflections.rb
226
+ - spec/dummy/config/initializers/koudoku.rb
227
+ - spec/dummy/config/initializers/mime_types.rb
228
+ - spec/dummy/config/initializers/secret_token.rb
229
+ - spec/dummy/config/initializers/session_store.rb
230
+ - spec/dummy/config/initializers/wrap_parameters.rb
231
+ - spec/dummy/config/locales/devise.en.yml
232
+ - spec/dummy/config/locales/en.yml
233
+ - spec/dummy/config/routes.rb
234
+ - spec/dummy/db/migrate/20130318201927_create_customers.rb
235
+ - spec/dummy/db/migrate/20130318204455_create_subscriptions.rb
236
+ - spec/dummy/db/migrate/20130318204458_create_plans.rb
237
+ - spec/dummy/db/migrate/20130318204502_create_coupons.rb
238
+ - spec/dummy/db/migrate/20130520163946_add_interval_to_plan.rb
239
+ - spec/dummy/db/schema.rb
240
+ - spec/dummy/db/test.sqlite3
241
+ - spec/dummy/log/test.log
242
+ - spec/dummy/public/404.html
243
+ - spec/dummy/public/422.html
244
+ - spec/dummy/public/500.html
245
+ - spec/dummy/public/favicon.ico
246
+ - spec/dummy/script/rails
247
+ - spec/dummy/test/fixtures/customers.yml
248
+ - spec/dummy/test/unit/customer_test.rb
249
+ - spec/helpers/koudoku/application_helper_spec.rb
250
+ - spec/spec_helper.rb
251
+ homepage: http://github.com/andrewculver/koudoku
252
+ licenses:
253
+ - MIT
254
+ metadata: {}
255
+ post_install_message: |+
256
+ Koudoku is still in early development, so if this installation is an upgrade
257
+ from an earlier version, be sure to check the CHANGELOG for any instructions
258
+ you may need to follow to accommodate breaking changes:
259
+
260
+ https://github.com/andrewculver/koudoku/blob/master/CHANGELOG.md
261
+
262
+ rdoc_options: []
263
+ require_paths:
264
+ - lib
265
+ required_ruby_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ requirements: []
276
+ rubyforge_project:
277
+ rubygems_version: 2.5.2
278
+ signing_key:
279
+ specification_version: 4
280
+ summary: Robust subscription support for Rails with Stripe.
281
+ test_files:
282
+ - spec/helpers/koudoku/application_helper_spec.rb
283
+ - spec/controllers/koudoku/subscriptions_controller.rb
284
+ - spec/concerns/koudoku/subscription_spec.rb
285
+ - spec/concerns/koudoku/plan_spec.rb
286
+ - spec/dummy/db/schema.rb
287
+ - spec/dummy/db/test.sqlite3
288
+ - spec/dummy/db/migrate/20130318201927_create_customers.rb
289
+ - spec/dummy/db/migrate/20130318204455_create_subscriptions.rb
290
+ - spec/dummy/db/migrate/20130318204502_create_coupons.rb
291
+ - spec/dummy/db/migrate/20130318204458_create_plans.rb
292
+ - spec/dummy/db/migrate/20130520163946_add_interval_to_plan.rb
293
+ - spec/dummy/config/application.rb
294
+ - spec/dummy/config/locales/en.yml
295
+ - spec/dummy/config/locales/devise.en.yml
296
+ - spec/dummy/config/environments/test.rb
297
+ - spec/dummy/config/environments/production.rb
298
+ - spec/dummy/config/environments/development.rb
299
+ - spec/dummy/config/routes.rb
300
+ - spec/dummy/config/environment.rb
301
+ - spec/dummy/config/database.yml
302
+ - spec/dummy/config/boot.rb
303
+ - spec/dummy/config/initializers/inflections.rb
304
+ - spec/dummy/config/initializers/session_store.rb
305
+ - spec/dummy/config/initializers/devise.rb
306
+ - spec/dummy/config/initializers/koudoku.rb
307
+ - spec/dummy/config/initializers/backtrace_silencers.rb
308
+ - spec/dummy/config/initializers/mime_types.rb
309
+ - spec/dummy/config/initializers/secret_token.rb
310
+ - spec/dummy/config/initializers/wrap_parameters.rb
311
+ - spec/dummy/public/500.html
312
+ - spec/dummy/public/favicon.ico
313
+ - spec/dummy/public/422.html
314
+ - spec/dummy/public/404.html
315
+ - spec/dummy/README.rdoc
316
+ - spec/dummy/app/helpers/application_helper.rb
317
+ - spec/dummy/app/controllers/application_controller.rb
318
+ - spec/dummy/app/assets/javascripts/application.js
319
+ - spec/dummy/app/assets/stylesheets/application.css
320
+ - spec/dummy/app/views/layouts/application.html.erb
321
+ - spec/dummy/app/views/koudoku/subscriptions/_social_proof.html.erb
322
+ - spec/dummy/app/models/customer.rb
323
+ - spec/dummy/app/models/subscription.rb
324
+ - spec/dummy/app/models/coupon.rb
325
+ - spec/dummy/app/models/plan.rb
326
+ - spec/dummy/script/rails
327
+ - spec/dummy/config.ru
328
+ - spec/dummy/log/test.log
329
+ - spec/dummy/test/unit/customer_test.rb
330
+ - spec/dummy/test/fixtures/customers.yml
331
+ - spec/dummy/Rakefile
332
+ - spec/spec_helper.rb