stripe-rails 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7790f65ab8bfe36fbf31047548b4fcff0bfd5fe5
4
- data.tar.gz: 92c7f09f3630fe66adfc067e8e4bdfccd29800bc
3
+ metadata.gz: 2093ec1a3bd46eb90811710db16bdfe309312e1c
4
+ data.tar.gz: 4b3f402cf1327a22688bd5bf6b6cd051be1d23f0
5
5
  SHA512:
6
- metadata.gz: b339d2c6f0b45b8cd8dba33eeec647aa55816f91125cff77819f307982d46cf11948144c831739164a4ce2b53d81190d84adf9c2c54b6dcfe710e499cb209be1
7
- data.tar.gz: 18437c4443284797186f842b63180d86fc4355a6cc99d8ffde3eb0241b6110f9a45d5e997473e53c66b1e74a08d48bbc420dc91481a842c3215dcc79c6778c5d
6
+ metadata.gz: 98d339c9a0a0f858af220470bc722c39fc23707dd9a786a9fbc0788cfbb0b0ff71258d6c6b5b31f4b807493da274d63485d15e12083c6ec1357eb3693bb94f3e
7
+ data.tar.gz: ee4d0b67c1932dbdc05f287f0502d5ff7a49e7bc3497187c9c8f18642703316a6407ad51533cbcf6d49868f834790d7de3166752b8db44cb1eb37916a635ad23
data/Changelog.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.3.1 (2014-08-07)
2
+ * add `eager_load` option to load callbacks into classes in non-eager-loaded enviroments
3
+
1
4
  ## 0.3.0 (2014-04-29)
2
5
  * Rename api_key to secret_key
3
6
 
data/README.md CHANGED
@@ -232,6 +232,16 @@ class InvoiceMailer < ActionMailer::Base
232
232
  end
233
233
  ```
234
234
 
235
+ **Note:** `Stripe::Callbacks` won't get included until the including class has been loaded. This is usually not an issue in the production environment as eager loading is enabled by default (`config.eager_load = true`). You may run into an issue in your development environment where eager loading is disabled by default.
236
+
237
+ If you don't wish to enable eager loading in development, you can configure the classes to be eager loaded like so
238
+
239
+ ```ruby
240
+ # in your application's config/environments/development.rb
241
+ config.stripe.eager_load = 'account', 'module/some_class', 'etc'
242
+ ```
243
+ This will ensure that callbacks will get loaded in those configured classes if eager loading is disabled.
244
+
235
245
  The naming convention for the callback events is after__{callback_name}! where `callback_name`
236
246
  is name of the stripe event with all `.` characters substituted with underscores. So, for
237
247
  example, the stripe event `customer.discount.created` can be hooked by `after_customer_discount_created!`
@@ -243,6 +253,8 @@ Each web hook is passed an instance of the stripe object to which the event corr
243
253
  By default, the event is re-fetched securely from stripe.com to prevent damage to your system by
244
254
  a malicious system spoofing real stripe events.
245
255
 
256
+
257
+
246
258
  ### Critical and non-critical hooks
247
259
 
248
260
  So far, the examples have all used critical hooks, but in fact, each callback method comes in two flavors: "critical",
@@ -325,6 +337,7 @@ end
325
337
 
326
338
  See the [complete listing of all stripe events][5], and the [webhook tutorial][6] for more great information on this subject.
327
339
 
340
+
328
341
  ## Thanks
329
342
 
330
343
  <a href="http://thefrontside.net">![The Frontside](http://github.com/cowboyd/therubyracer/raw/master/thefrontside.png)</a>
@@ -11,6 +11,9 @@
11
11
  # # amount in cents. This is 6.99
12
12
  # plan.amount = 699
13
13
  #
14
+ # # currency to use for the plan (default 'usd')
15
+ # plan.currency = 'usd'
16
+ #
14
17
  # # interval must be either 'week', 'month' or 'year'
15
18
  # plan.interval = 'month'
16
19
  #
data/lib/stripe/engine.rb CHANGED
@@ -8,7 +8,7 @@ module Stripe
8
8
  attr_accessor :testing
9
9
  end
10
10
 
11
- stripe_config = config.stripe = Struct.new(:api_base, :secret_key, :verify_ssl_certs, :publishable_key, :endpoint, :debug_js, :auto_mount).new
11
+ stripe_config = config.stripe = Struct.new(:api_base, :secret_key, :verify_ssl_certs, :publishable_key, :endpoint, :debug_js, :auto_mount, :eager_load).new
12
12
 
13
13
  def stripe_config.api_key=(key)
14
14
  warn "[DEPRECATION] to align with stripe nomenclature, stripe.api_key has been renamed to config.stripe.secret_key"
@@ -20,6 +20,7 @@ module Stripe
20
20
  stripe.secret_key ||= ENV['STRIPE_SECRET_KEY']
21
21
  stripe.endpoint ||= '/stripe'
22
22
  stripe.auto_mount = true if stripe.auto_mount.nil?
23
+ stripe.eager_load ||= []
23
24
  if stripe.debug_js.nil?
24
25
  stripe.debug_js = ::Rails.env.development?
25
26
  end
@@ -40,6 +41,18 @@ environment file directly.
40
41
  MSG
41
42
  end
42
43
 
44
+ initializer 'stripe.callbacks.eager_load' do |app|
45
+ app.config.after_initialize do
46
+ app.config.stripe.eager_load.each do |constant|
47
+ begin
48
+ constant.to_s.camelize.constantize
49
+ rescue NameError
50
+ require constant
51
+ end
52
+ end
53
+ end
54
+ end
55
+
43
56
  initializer 'stripe.javascript_helper' do
44
57
  ActiveSupport.on_load :action_controller do
45
58
  helper Stripe::JavascriptHelper
data/lib/stripe/plans.rb CHANGED
@@ -3,8 +3,7 @@ module Stripe
3
3
  include ConfigurationBuilder
4
4
 
5
5
  configuration_for :plan do
6
- attr_reader :currency
7
- attr_accessor :name, :amount, :interval, :interval_count, :trial_period_days
6
+ attr_accessor :name, :amount, :interval, :interval_count, :trial_period_days, :currency
8
7
 
9
8
  validates_presence_of :id, :name, :amount
10
9
  validates_inclusion_of :interval, :in => %w(week month year), :message => "'%{value}' is not one of 'week', 'month' or 'year'"
@@ -1,5 +1,5 @@
1
1
  module Stripe
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = '0.3.1'
4
4
  end
5
5
  end
@@ -31,6 +31,11 @@ describe Stripe::Callbacks do
31
31
  ::Stripe::Callbacks.clear_callbacks!
32
32
  end
33
33
 
34
+ it 'has eager loaded the callbacks listed in the configuration' do
35
+ assert Dummy.const_defined?(:ModelWithCallbacks), 'should have eager loaded'
36
+ assert Dummy.const_defined?(:ModuleWithCallbacks), 'should have eager loaded'
37
+ end
38
+
34
39
  it 'has a ping interface just to make sure that everything is working just fine' do
35
40
  get '/stripe/ping'
36
41
  assert last_response.ok?
@@ -0,0 +1,2 @@
1
+ class Dummy::ModelWithCallbacks
2
+ end
@@ -2,6 +2,7 @@ Dummy::Application.configure do
2
2
 
3
3
  config.stripe.api_base = 'http://localhost:5000'
4
4
  config.stripe.verify_ssl_certs = false
5
+ config.stripe.eager_load = 'dummy/model_with_callbacks', 'dummy/module_with_callbacks'
5
6
 
6
7
  # Settings specified here will take precedence over those in config/application.rb
7
8
 
@@ -2,4 +2,11 @@ Stripe.plan :gold do |plan|
2
2
  plan.name = 'Solid Gold'
3
3
  plan.amount = 699
4
4
  plan.interval = 'month'
5
- end
5
+ end
6
+
7
+ Stripe.plan :alternative_currency do |plan|
8
+ plan.name = 'Alternative Currency'
9
+ plan.amount = 699
10
+ plan.interval = 'month'
11
+ plan.currency = 'cad'
12
+ end
@@ -0,0 +1,2 @@
1
+ class Dummy::ModuleWithCallbacks
2
+ end
@@ -74,6 +74,7 @@ describe 'building plans' do
74
74
  before do
75
75
  Stripe::Plan.stubs(:retrieve).raises(Stripe::InvalidRequestError.new("not found", "id"))
76
76
  end
77
+
77
78
  it 'creates the plan online' do
78
79
  Stripe::Plan.expects(:create).with(
79
80
  :id => :gold,
@@ -87,6 +88,19 @@ describe 'building plans' do
87
88
  Stripe::Plans::GOLD.put!
88
89
  end
89
90
 
91
+ it 'creates a plan with an alternative currency' do
92
+ Stripe::Plan.expects(:create).with(
93
+ :id => :alternative_currency,
94
+ :currency => 'cad',
95
+ :name => 'Alternative Currency',
96
+ :amount => 699,
97
+ :interval => 'month',
98
+ :interval_count => 1,
99
+ :trial_period_days => 0
100
+ )
101
+ Stripe::Plans::ALTERNATIVE_CURRENCY.put!
102
+ end
103
+
90
104
  end
91
105
  describe 'when it is already present on stripe.com' do
92
106
  before do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - rubygeek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-29 00:00:00.000000000 Z
11
+ date: 2014-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -86,6 +86,7 @@ files:
86
86
  - test/dummy/app/helpers/application_helper.rb
87
87
  - test/dummy/app/mailers/.gitkeep
88
88
  - test/dummy/app/models/.gitkeep
89
+ - test/dummy/app/models/dummy/model_with_callbacks.rb
89
90
  - test/dummy/app/views/layouts/application.html.erb
90
91
  - test/dummy/config.ru
91
92
  - test/dummy/config/application.rb
@@ -105,6 +106,7 @@ files:
105
106
  - test/dummy/config/routes.rb
106
107
  - test/dummy/config/stripe/plans.rb
107
108
  - test/dummy/lib/assets/.gitkeep
109
+ - test/dummy/lib/dummy/module_with_callbacks.rb
108
110
  - test/dummy/log/.gitkeep
109
111
  - test/dummy/public/404.html
110
112
  - test/dummy/public/422.html
@@ -151,6 +153,7 @@ test_files:
151
153
  - test/dummy/app/helpers/application_helper.rb
152
154
  - test/dummy/app/mailers/.gitkeep
153
155
  - test/dummy/app/models/.gitkeep
156
+ - test/dummy/app/models/dummy/model_with_callbacks.rb
154
157
  - test/dummy/app/views/layouts/application.html.erb
155
158
  - test/dummy/config.ru
156
159
  - test/dummy/config/application.rb
@@ -170,6 +173,7 @@ test_files:
170
173
  - test/dummy/config/routes.rb
171
174
  - test/dummy/config/stripe/plans.rb
172
175
  - test/dummy/lib/assets/.gitkeep
176
+ - test/dummy/lib/dummy/module_with_callbacks.rb
173
177
  - test/dummy/log/.gitkeep
174
178
  - test/dummy/public/404.html
175
179
  - test/dummy/public/422.html