SDK Ruby et Rails

Le gem Ruby est généré depuis le contrat Spore et fournit des modèles pour chaque requête et réponse. Son namespace est SporeEmail afin de ne pas entrer en conflit avec l’ancien gem spore déjà présent sur RubyGems.

Installation

# Gemfile
gem "spore-email"

Puis installez la dépendance :

bundle install

Configuration Rails

# config/initializers/spore.rb
SporeEmail.configure do |config|
  config.api_key["Authorization"] = ENV.fetch("SPORE_API_KEY")
  config.api_key_prefix["Authorization"] = "Bearer"
end

En local, vous pouvez aussi assigner config.host = "http://localhost:4110" dans ce même initializer.

Envoyer un email

require "securerandom"
 
message = SporeEmail::SendEmailSendEmailRequest.new(
  from: "hello@votredomaine.fr",
  to: ["alex@example.com"],
  subject: "Bienvenue",
  html: "<p>Votre compte est prêt.</p>"
)
 
result = SporeEmail::MessagingApi.new.send_email(
  message,
  idempotency_key: SecureRandom.uuid
)

Dans un ActiveJob, utilisez le job_id comme clé d’idempotence. Un retry du même job ne créera ainsi pas un second message chez Spore.

Gérer les erreurs

begin
  result = SporeEmail::MessagingApi.new.send_email(message)
rescue SporeEmail::ApiError => error
  Rails.logger.error(error.message)
end

Aller plus loin