☒ very good point. I didn't pick up on it because it looked like the cropping was working as intended, but you're absolutely right that it is best to not try to add strings together, but rather numbers.
☒ It's likely some kind of issue with improper codecs or something. I do use handbrake on all of my videos before I upload them. I use the Web 1080p conversion. I don't know what that translates to on ffmpeg, but you might need to do some kind of transcoding before creating the variants.
☒ I prefer Stripe Checkout now since it handles a lot of things out of the box that you don't have to think about like the 3D Secure credit cards and any other security practices. I do have recent episodes on that topic.
However, if you still want to go this route, check your browser's dev console to see if there are any javascript errors on the page and let us know.
☒ The Stripe API 2020-08-27 and later no longer have the customer.subscriptions option by default. Instead to get the user's subscription you can do this.
In the stripe_customer method, You wouldn't need to search the subscriptions with customer: user.stripe_id since you're in the user model already. Just use stripe_id On the create action, You should create a Subscription and pass in the stripe customer id.