दस्तावेज़ पर जाएँ
Ruby

इंस्टॉल

एक gem, कोई रनटाइम निर्भरता नहीं, Ruby 3.2 और ऊपर।

इंस्टॉल

मौजूदा रिलीज़ 0.0.1 है। इसमें TypeScript SDK के हर मेथड के लिए एक मेथड है, उसी नाम के snake_case रूप में, और gem की समानता जाँच तब build को विफल कर देती है जब कोई मेथड ग़ायब हो या अलग रिक्वेस्ट भेजे।

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 और हर दूसरा namespace उसी का इस्तेमाल करता है। इसे छोड़ दें तो पहली कॉल क्लाइंट को OPENEMAIL_API_KEY से बना लेती है।

जवाब पार्स किया गया JSON है, Symbol कुंजियों वाले एक Hash के रूप में, इसलिए email[:id] id पढ़ता है। कुंजियाँ API के नाम बनाए रखती हैं, इसीलिए scheduledAt जैसा फ़ील्ड camelCase में रहता है जबकि मेथड और उनके विकल्प snake_case में होते हैं।

send का लौट आना इसका मतलब नहीं कि संदेश चला गया। शेड्यूल किया गया या रद्द किया जा सकने वाला send queued या scheduled लौटता है और बाद में तय होता है। status पढ़ें, न कि यह कि कॉल लौट आई।

यह कहाँ चलता है

Ruby 3.2 और ऊपर, बिना किसी रनटाइम निर्भरता के। HTTP क्लाइंट मानक लाइब्रेरी का Net::HTTP है, keep-alive कनेक्शनों के एक पूल के साथ, इसलिए API को भेजी गई दूसरी रिक्वेस्ट उसी कनेक्शन को दोबारा इस्तेमाल करती है जो पहली ने खोला था।

एक क्लाइंट को थ्रेड्स के बीच साझा करना सुरक्षित है, इसलिए Puma या Sidekiq प्रोसेस को सिर्फ़ एक चाहिए। fork के बाद, जैसे Puma के cluster मोड, Unicorn या Resque में, चाइल्ड प्रोसेस पैरेंट के कनेक्शन दोबारा इस्तेमाल करने के बजाय अपने कनेक्शन खोलता है।

क्लाइंट एक वर्कस्पेस API कुंजी लिए चलता है जो मेल भेज सकती है और मेलबॉक्स पढ़ सकती है, इसलिए इसकी जगह सर्वर पर, किसी जॉब में या आपकी अपनी मशीन पर चलने वाले टूल में है। कुंजी को Rails.application.credentials या किसी एनवायरनमेंट वेरिएबल में रखें, कोड में कभी नहीं।