Функции рельсов 4 - stripe_event

Я использую услугу оплаты Stripe с драгоценными камнями stripe и stripe_event. Пока все хорошо - они отлично работают.

Я хочу использовать прослушиватель webtooks stripe_event, чтобы выполнить кучу действий. Например, когда Stripe отправляет webhook, предлагая приложение новой подписки, я хочу добавить эту подписку в таблицу subscriptions, отправить электронное письмо новому пользователю, сообщить администраторам и т.д.

В (очень скудный) stripe_event docs на github они говорят, чтобы подписаться на объект с помощью метода call и показать пример как

class CustomerCreated
  def call(event)
    # Event handling
  end
end

Однако они не показывают, где находится этот код (какой файл он будет помещен) или как он вызывается из config/initializers/stripe.rb.

Может ли кто-нибудь дать ясный пример того, как их использовать?

Ответ 1

Что бы я сделал, это создать новый каталог app/stripe_handlers и вставить этот код в файл с именем customer_created.rb. Любой код в app/ автоматически загружается Rails. Вы также можете вставить его где-нибудь в lib/, но он не получит автозагрузку.

Вы отправили бы ваш обработчик из вашего вопроса в app/stripe_handlers/customer_created.rb, а затем в config/initializers/stripe_event.rb вы сказали бы что-то вроде:

StripeEvent.configure do |events| events.subscribe 'customer.created', CustomerCreated.new end

Когда StripeEvent получает событие с типом customer.created, он вызывает метод call в экземпляре CustomerCreated, который вы сделали в инициализаторе.