Firebase Local Emulator Suite का इस्तेमाल शुरू करने से पहले, पक्का करें कि आपने Firebase प्रोजेक्ट बना लिया हो, डेवलपमेंट एनवायरमेंट सेट अप कर लिया हो, और अपने प्लैटफ़ॉर्म के लिए Firebase SDK टूल चुनकर इंस्टॉल कर लिए हों. इसके लिए, अपने प्लैटफ़ॉर्म के हिसाब से Firebase का इस्तेमाल शुरू करना लेख पढ़ें: Apple, Android या वेब.
प्रोटोटाइप बनाना और उसकी जांच करना
Local Emulator Suite में कई प्रॉडक्ट एम्युलेटर शामिल हैं. इनके बारे में Firebase Local Emulator Suite के बारे में जानकारी लेख में बताया गया है. आपके पास अलग-अलग एम्युलेटर के साथ-साथ एम्युलेटर के कॉम्बिनेशन का इस्तेमाल करके प्रोटोटाइप बनाने और उनकी टेस्टिंग करने का विकल्प होता है. ऐसा अपनी ज़रूरत के हिसाब से किया जा सकता है. इससे यह तय किया जा सकता है कि प्रोडक्शन में Firebase के किन प्रॉडक्ट का इस्तेमाल किया जा रहा है.
इस विषय के लिए, Local Emulator Suite वर्कफ़्लो के बारे में बताने के लिए, मान लें कि आप एक ऐसे ऐप्लिकेशन पर काम कर रहे हैं जो प्रॉडक्ट के सामान्य कॉम्बिनेशन का इस्तेमाल करता है: एक Firebase डेटाबेस और उस डेटाबेस पर कार्रवाइयों से ट्रिगर होने वाले क्लाउड फ़ंक्शन.
अपने Firebase प्रोजेक्ट को स्थानीय तौर पर शुरू करने के बाद, Local Emulator Suite का इस्तेमाल करके डेवलपमेंट साइकल में आम तौर पर तीन चरण होते हैं:
प्रोटोटाइप की सुविधाओं को एम्युलेटर और Emulator Suite UI के साथ इंटरैक्टिव तरीके से इस्तेमाल किया जा सकता है.
अगर डेटाबेस एम्युलेटर या Cloud Functions एम्युलेटर का इस्तेमाल किया जा रहा है, तो अपने ऐप्लिकेशन को एम्युलेटर से कनेक्ट करने के लिए, एक बार यह तरीका अपनाएं.
एम्युलेटर और कस्टम स्क्रिप्ट की मदद से, अपने टेस्ट अपने-आप पूरे होने की सुविधा पाएं.
Firebase प्रोजेक्ट को स्थानीय तौर पर शुरू करना
पक्का करें कि आपने सीएलआई इंस्टॉल किया हो या इसे नए वर्शन पर अपडेट किया हो.
curl -sL firebase.tools | bashअगर आपने अब तक ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. इससे यह तय किया जा सकेगा कि Cloud Functions और Cloud Firestore या Realtime Database का इस्तेमाल किया जा रहा है:
firebase initअब आपकी प्रोजेक्ट डायरेक्ट्री में Firebase कॉन्फ़िगरेशन फ़ाइलें, डेटाबेस के लिए Firebase Security Rules डेफ़िनिशन फ़ाइल, क्लाउड फ़ंक्शन कोड वाली functions डायरेक्ट्री, और अन्य सहायक फ़ाइलें होंगी.
इंटरैक्टिव प्रोटोटाइप बनाना
Local Emulator Suite को इस तरह से डिज़ाइन किया गया है कि इसकी मदद से, नई सुविधाओं का प्रोटोटाइप तुरंत बनाया जा सकता है. साथ ही, Suite में पहले से मौजूद यूज़र इंटरफ़ेस, प्रोटोटाइपिंग के सबसे काम के टूल में से एक है. यह कुछ हद तक, Firebase कंसोल को स्थानीय तौर पर चलाने जैसा है.
Emulator Suite UI का इस्तेमाल करके, डेटाबेस के डिज़ाइन को बेहतर बनाया जा सकता है. साथ ही, क्लाउड फ़ंक्शन का इस्तेमाल करके अलग-अलग डेटाफ़्लो आज़माए जा सकते हैं. इसके अलावा, सुरक्षा से जुड़े नियमों में किए गए बदलावों का आकलन किया जा सकता है. साथ ही, यह पुष्टि करने के लिए लॉग देखे जा सकते हैं कि बैक-एंड सेवाएं कैसा परफ़ॉर्म कर रही हैं. इसके अलावा, और भी कई काम किए जा सकते हैं. इसके बाद, अगर आपको नए सिरे से शुरुआत करनी है, तो बस अपना डेटाबेस मिटाएं और नए डिज़ाइन के आइडिया के साथ नए सिरे से शुरुआत करें.
Local Emulator Suite को इन तरीकों से शुरू करने पर, ये सभी सुविधाएं उपलब्ध होती हैं:
firebase emulators:startअपने काल्पनिक ऐप्लिकेशन का प्रोटोटाइप बनाने के लिए, आइए एक बुनियादी क्लाउड फ़ंक्शन सेट अप करें और उसकी जांच करें. इससे डेटाबेस में टेक्स्ट एंट्री में बदलाव किया जा सकेगा. साथ ही, Emulator Suite UI में उस डेटाबेस को बनाया और भरा जा सकेगा, ताकि इसे ट्रिगर किया जा सके.
- अपनी प्रोजेक्ट डायरेक्ट्री में मौजूद
functions/index.jsफ़ाइल में बदलाव करके, डेटाबेस में लिखे गए डेटा के आधार पर ट्रिगर होने वाला क्लाउड फ़ंक्शन बनाएं. मौजूदा फ़ाइल के कॉन्टेंट को इस स्निपेट से बदलें. यह फ़ंक्शन,messagesकलेक्शन में मौजूद दस्तावेज़ों में किए गए बदलावों को सुनता है. साथ ही, किसी दस्तावेज़ केoriginalफ़ील्ड के कॉन्टेंट को अपरकेस में बदलता है और नतीजे को उस दस्तावेज़ केuppercaseफ़ील्ड में सेव करता है. firebase emulators:startकी मदद से Local Emulator Suite लॉन्च करें. Cloud Functions और डेटाबेस एम्युलेटर शुरू हो जाते हैं. इन्हें एक-दूसरे के साथ काम करने के लिए अपने-आप कॉन्फ़िगर किया जाता है.- अपने ब्राउज़र में यूज़र इंटरफ़ेस (यूआई) को
http://localhost:4000पर देखें. पोर्ट 4000, यूज़र इंटरफ़ेस (यूआई) के लिए डिफ़ॉल्ट पोर्ट है. हालांकि, Firebase सीएलआई से मिले टर्मिनल मैसेज की आउटपुट की जांच करें. उपलब्ध एम्युलेटर की स्थिति नोट करें. इस मामले में, Cloud Functions और Cloud Firestore एम्युलेटर चालू रहेंगे.
- यूज़र इंटरफ़ेस (यूआई) में, Firestore > डेटा टैब पर, कलेक्शन शुरू करें पर क्लिक करें. इसके बाद, निर्देशों का पालन करके
messagesकलेक्शन में एक नया दस्तावेज़ बनाएं. इसमें फ़ील्ड का नामoriginalऔर वैल्यूtestहोनी चाहिए. इससे हमारा क्लाउड फ़ंक्शन ट्रिगर होता है. देखें कि कुछ समय बाद एक नयाuppercaseफ़ील्ड दिखता है. इसमें "TEST" स्ट्रिंग भरी होती है.
- Firestore > अनुरोध टैब पर जाकर, अपने नकली डेटाबेस में किए गए अनुरोधों की जांच करें. इसमें वे सभी Firebase Security Rules आकलन भी शामिल हैं जो उन अनुरोधों को पूरा करने के लिए किए गए थे.
- लॉग टैब में जाकर देखें कि डेटाबेस को अपडेट करते समय, आपके फ़ंक्शन में कोई गड़बड़ी तो नहीं हुई.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
आपको अपने क्लाउड फ़ंक्शन कोड और इंटरैक्टिव डेटाबेस में किए गए बदलावों के बीच आसानी से दोहराव करने की सुविधा मिलती है. इससे आपको अपनी ज़रूरत के मुताबिक डेटा फ़्लो मिलता है. इसके लिए, आपको ऐप्लिकेशन में डेटाबेस ऐक्सेस करने के कोड में बदलाव करने, फिर से कंपाइल करने, और टेस्ट सुइट को फिर से चलाने की ज़रूरत नहीं होती.
अपने ऐप्लिकेशन को एम्युलेटर से कनेक्ट करना
जब आपने इंटरैक्टिव प्रोटोटाइपिंग में अच्छी प्रोग्रेस कर ली हो और आपने कोई डिज़ाइन तय कर लिया हो, तब आपके पास सही एसडीके का इस्तेमाल करके, अपने ऐप्लिकेशन में डेटाबेस ऐक्सेस कोड जोड़ने का विकल्प होगा. आपको डेटाबेस टैब का इस्तेमाल जारी रखना होगा. साथ ही, फ़ंक्शन के लिए Emulator Suite UI में मौजूद लॉग टैब का इस्तेमाल करना होगा. इससे यह पुष्टि की जा सकेगी कि आपका ऐप्लिकेशन सही तरीके से काम कर रहा है.
ध्यान रखें कि Local Emulator Suite एक लोकल डेवलपमेंट टूल है. आपके प्रोडक्शन डेटाबेस में किए गए बदलाव, स्थानीय तौर पर प्रोटोटाइप किए जा रहे फ़ंक्शन को ट्रिगर नहीं करेंगे.
अपने ऐप्लिकेशन को डेटाबेस में लिखने की अनुमति देने के लिए, आपको अपनी टेस्ट क्लास या ऐप्लिकेशन में मौजूद कॉन्फ़िगरेशन को Cloud Firestoreएम्युलेटर पर पॉइंट करना होगा.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
कस्टम स्क्रिप्ट की मदद से, अपने टेस्ट ऑटोमेट करना
अब वर्कफ़्लो का आखिरी चरण. ऐप्लिकेशन में अपनी सुविधा का प्रोटोटाइप बनाने के बाद, अगर यह सभी प्लैटफ़ॉर्म पर अच्छी तरह से काम कर रही है, तो इसे लागू करने और टेस्ट करने के लिए आगे बढ़ें. यूनिट टेस्टिंग और सीआई वर्कफ़्लो के लिए, exec कमांड का इस्तेमाल करके, एक ही कॉल में एम्युलेटर शुरू किए जा सकते हैं, स्क्रिप्ट की गई जांचें चलाई जा सकती हैं, और एम्युलेटर बंद किए जा सकते हैं:
firebase emulators:exec "./testdir/test.sh"हर एम्युलेटर के बारे में ज़्यादा जानें
अब आपको क्लाइंट-साइड के बुनियादी वर्कफ़्लो के बारे में पता चल गया है. अब Suite में मौजूद अलग-अलग एम्युलेटर के बारे में ज़्यादा जानकारी पाएं. साथ ही, सर्वर-साइड ऐप्लिकेशन डेवलपमेंट के लिए इनका इस्तेमाल करने का तरीका जानें:
- प्रोटोटाइपिंग वर्कफ़्लो में Authentication एम्युलेटर जोड़ना
- Realtime Database एम्युलेटर की सुविधाओं के बारे में ज़्यादा जानें
- Cloud Storage for Firebase एम्युलेटर की सुविधाओं के बारे में ज़्यादा जानें
- Cloud Firestore एम्युलेटर की सुविधाओं के बारे में ज़्यादा जानें
- अपने ऐप्लिकेशन को Cloud Functions एम्युलेटर से कनेक्ट करना
- Extensions एम्युलेटर की मदद से, बिलिंग की लागत को कम करते हुए Firebase Extensions का आकलन करना
आगे क्या करना है?
ऊपर दिए गए लिंक पर जाकर, खास एमुलेटर से जुड़े विषयों के बारे में ज़रूर पढ़ें. इसके बाद:
- वीडियो के चुने गए सेट और इस्तेमाल के तरीके के बारे में ज़्यादा जानकारी देने वाले उदाहरणों के लिए, Firebase Emulator की ट्रेनिंग वाली प्लेलिस्ट देखें.
- सुरक्षा के नियमों की टेस्टिंग और Firebase Test SDK से जुड़े ऐडवांस इस्तेमाल के उदाहरणों के बारे में जानें: सुरक्षा के नियमों की टेस्टिंग (Cloud Firestore) , सुरक्षा के नियमों की टेस्टिंग (Realtime Database), और सुरक्षा के नियमों की टेस्टिंग (Cloud Storage for Firebase).