پرش به مستندات
Ruby

نصب

یک gem، بدون وابستگی زمان اجرا، Ruby 3.2 به بالا.

نصب

انتشار کنونی 0.0.1 است. برای هر متد SDK TypeScript یک متد با همان نام به شکل snake_case دارد، و بررسی همخوانیِ gem وقتی یکی غایب باشد یا درخواست متفاوتی بفرستد بیلد را می‌شکند.

bundle add openemail
send_email.rb
require "openemail" OpenEmail.init(api_key: ENV.fetch("OPENEMAIL_API_KEY")) email = OpenEmail.emails.send(  from: "Acme Billing <[email protected]>",  to: "[email protected]",  subject: "Your September invoice",  html: "<p>Invoice attached.</p>") puts email[:id], email[:status]

OpenEmail.init کلاینت مشترک را یک بار پیکربندی می‌کند، و از آن پس OpenEmail.emails، OpenEmail.threads و هر فضای نام دیگری در هر فایل از آن استفاده می‌کنند. اگر از آن صرف‌نظر کنید، نخستین فراخوانی کلاینت را از OPENEMAIL_API_KEY می‌سازد.

پاسخ، همان JSON تجزیه‌شده به شکل یک Hash با کلیدهای Symbol است، پس email[:id] شناسه را می‌خواند. کلیدها نام‌های API را نگه می‌دارند، و به همین دلیل فیلدی مانند scheduledAt به شکل camelCase می‌ماند، در حالی که متدها و گزینه‌هایشان snake_case هستند.

بازگشتن send به این معنا نیست که پیام رفته است. یک ارسال زمان‌بندی‌شده یا لغوپذیر با queued یا scheduled برمی‌گردد و بعداً تعیین تکلیف می‌شود. status را بخوانید، نه این واقعیت را که فراخوانی بازگشت.

کجا اجرا می‌شود

Ruby 3.2 به بالا، بدون وابستگی زمان اجرا. کلاینت HTTP همان Net::HTTP از کتابخانهٔ استاندارد است، با مخزنی از اتصال‌های keep-alive، پس درخواست دوم به API از اتصالی که درخواست نخست باز کرده دوباره استفاده می‌کند.

یک کلاینت را می‌توان بی‌خطر میان تردها به اشتراک گذاشت، پس یک فرایند Puma یا Sidekiq فقط به یکی نیاز دارد. پس از fork، مانند حالت cluster در Puma، یا در Unicorn و Resque، فرایند فرزند اتصال‌های خودش را باز می‌کند و از اتصال‌های والد دوباره استفاده نمی‌کند.

کلاینت یک کلید API فضای کاری را با خود دارد که می‌تواند ایمیل بفرستد و صندوق پستی را بخواند، پس جایش روی سرور، در یک کار پس‌زمینه یا در ابزاری است که روی دستگاه خودتان اجرا می‌شود. کلید را در Rails.application.credentials یا یک متغیر محیطی نگه دارید، هرگز در کد.