class StripePaymentIntegration def self.enabled? ENV["ENABLE_STRIPE_PAYMENT_INTEGRATION"] end end
This code isn't bulletproof. If it's not obvious - let me help you.
This is disabled by default. When we push to production, the app reboots. There exists a small window where
ENABLE_STRIPE_PAYMENT_INTEGRATION isn't set. The code technically isn't doing what you're expecting.
Why does the app reboot? Because Heroku dynos automatically restart with every new code release. Here's a short description of Heroku dynos.
If only we can set a default value to avoid to ensure this is enabled when we push. It'd be even better if it was in pure Ruby.
class StripePaymentIntegration def self.enabled? ENV.fetch("ENABLE_STRIPE_PAYMENT_INTEGRATION", "true") end end
Voila! Understand that
ENV serves as a hash-like structure. Thus, it can "fetch" a hash's value given a key.
Hash#fetch takes a lookup key in the first parameter and an optional second as a fallback value.
You can deploy and now be sure this works correctly!
I believe you get the most out of a software language by writing it as it's meant to be written. One of the pillars writing good Ruby code is being expressive.
ENV.fetch("ENABLE_STRIPE_PAYMENT_INTEGRATION", "true") comment below if that doesn't express what I'm puttin' down.