আপনার অ্যাপ সংযুক্ত করুন এবং প্রোটোটাইপিং শুরু করুন


Firebase Local Emulator Suite ব্যবহার শুরু করার আগে, নিশ্চিত করুন যে আপনি একটি Firebase প্রজেক্ট তৈরি করেছেন, আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করেছেন এবং আপনার প্ল্যাটফর্মের ( Apple , Android বা Web) জন্য 'Get started with Firebase' টপিক অনুযায়ী Firebase SDK নির্বাচন ও ইনস্টল করেছেন।

প্রোটোটাইপ এবং পরীক্ষা

Local Emulator Suite বেশ কয়েকটি প্রোডাক্ট এমুলেটর রয়েছে, যেমনটি “Introduction to Firebase Local Emulator Suite এ বর্ণনা করা হয়েছে। আপনি প্রোডাকশনে কোন Firebase প্রোডাক্টগুলো ব্যবহার করছেন তার উপর ভিত্তি করে, আপনার সুবিধামতো স্বতন্ত্র এমুলেটর বা এমুলেটরের সংমিশ্রণ ব্যবহার করে প্রোটোটাইপ তৈরি ও পরীক্ষা করতে পারেন।

ফায়ারবেস ডাটাবেস এবং ফাংশন এমুলেটরগুলির মধ্যে মিথস্ক্রিয়া
সম্পূর্ণ Local Emulator Suite অংশ হিসেবে ডাটাবেস এবং Cloud Functions এমুলেটর।

এই আলোচনায় Local Emulator Suite ওয়ার্কফ্লোর সাথে পরিচয় করিয়ে দেওয়ার জন্য, ধরা যাক আপনি এমন একটি অ্যাপ নিয়ে কাজ করছেন যা কয়েকটি সাধারণ প্রোডাক্টের সমন্বয়ে গঠিত: একটি ফায়ারবেস ডাটাবেস এবং সেই ডাটাবেসের অপারেশনের মাধ্যমে ট্রিগার হওয়া ক্লাউড ফাংশন।

আপনার ফায়ারবেস প্রজেক্টটি স্থানীয়ভাবে ইনিশিয়ালাইজ করার পর, Local Emulator Suite ব্যবহার করে ডেভেলপমেন্ট চক্রে সাধারণত তিনটি ধাপ থাকবে:

  1. এমুলেটর এবং Emulator Suite UI ব্যবহার করে ইন্টারেক্টিভভাবে প্রোটোটাইপ ফিচার তৈরি করুন।

  2. আপনি যদি ডাটাবেস এমুলেটর বা Cloud Functions এমুলেটর ব্যবহার করেন, তাহলে আপনার অ্যাপটিকে এমুলেটরগুলোর সাথে সংযুক্ত করতে একবারের জন্য এই পদক্ষেপটি গ্রহণ করুন।

  3. এমুলেটর এবং কাস্টম স্ক্রিপ্ট ব্যবহার করে আপনার টেস্টগুলো স্বয়ংক্রিয় করুন।

স্থানীয়ভাবে একটি ফায়ারবেস প্রজেক্ট শুরু করুন

নিশ্চিত করুন যে আপনি CLI ইনস্টল করেছেন অথবা এর সর্বশেষ সংস্করণে আপডেট করেছেন

curl -sL firebase.tools | bash

যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে বর্তমান ওয়ার্কিং ডিরেক্টরিটিকে একটি Firebase প্রজেক্ট হিসাবে ইনিশিয়ালাইজ করুন এবং আপনি যে Cloud FunctionsCloud Firestore অথবা Realtime Database ব্যবহার করছেন তা নির্দিষ্ট করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।

firebase init

আপনার প্রজেক্ট ডিরেক্টরিতে এখন ফায়ারবেস কনফিগারেশন ফাইল, ডাটাবেসের জন্য একটি Firebase Security Rules ডেফিনিশন ফাইল, ক্লাউড ফাংশন কোড সম্বলিত একটি functions ডিরেক্টরি এবং অন্যান্য সহায়ক ফাইল থাকবে।

ইন্টারেক্টিভভাবে প্রোটোটাইপ করুন

Local Emulator Suite আপনাকে দ্রুত নতুন ফিচারের প্রোটোটাইপ তৈরি করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে, এবং এই স্যুটের বিল্ট-ইন ইউজার ইন্টারফেসটি এর সবচেয়ে দরকারি প্রোটোটাইপিং টুলগুলোর মধ্যে অন্যতম। এটি অনেকটা স্থানীয়ভাবে Firebase কনসোল চালানোর মতো।

Emulator Suite UI ব্যবহার করে, আপনি একটি ডেটাবেসের ডিজাইন পরিমার্জন করতে পারেন, ক্লাউড ফাংশন-সম্পর্কিত বিভিন্ন ডেটাফ্লো পরীক্ষা করতে পারেন, সিকিউরিটি রুলস-এর পরিবর্তনগুলো মূল্যায়ন করতে পারেন, আপনার ব্যাক-এন্ড সার্ভিসগুলো কেমন পারফর্ম করছে তা নিশ্চিত করতে লগ চেক করতে পারেন এবং আরও অনেক কিছু করতে পারেন। এরপর, যদি আপনি নতুন করে শুরু করতে চান, তবে শুধু আপনার ডেটাবেসটি খালি করে একটি নতুন ডিজাইন আইডিয়া নিয়ে আবার শুরু করুন।

আপনি যখন Local Emulator Suite চালু করবেন, তখন এই সবকিছুই পাওয়া যাবে:

firebase emulators:start

আমাদের কাল্পনিক অ্যাপটির প্রোটোটাইপ তৈরি করার জন্য, চলুন একটি ডাটাবেসের টেক্সট এন্ট্রি পরিবর্তন করার জন্য একটি সাধারণ ক্লাউড ফাংশন সেট আপ ও পরীক্ষা করি এবং এটিকে চালু করার জন্য Emulator Suite UI তে সেই ডাটাবেসটি তৈরি ও ডেটা দিয়ে পূর্ণ করি।

  1. আপনার প্রজেক্ট ডিরেক্টরিতে থাকা functions/index.js ফাইলটি এডিট করে ডাটাবেস রাইট দ্বারা ট্রিগার হওয়া একটি ক্লাউড ফাংশন তৈরি করুন। বিদ্যমান ফাইলটির বিষয়বস্তু নিচের কোড স্নিপেট দিয়ে প্রতিস্থাপন করুন। এই ফাংশনটি messages হায়ারার্কিতে থাকা নোডগুলোর পরিবর্তন পর্যবেক্ষণ করে, নোডটির original প্রপার্টির বিষয়বস্তুকে আপারকেসে রূপান্তর করে এবং ফলাফলটি সেই নোডের uppercase প্রপার্টিতে সংরক্ষণ করে।
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. firebase emulators:start দিয়ে Local Emulator Suite চালু করুন। Cloud Functions এবং ডাটাবেস এমুলেটরগুলো চালু হয়ে যাবে এবং একে অপরের সাথে কাজ করার জন্য স্বয়ংক্রিয়ভাবে কনফিগার হয়ে যাবে।
  4. আপনার ব্রাউজারে http://localhost:4000 ঠিকানায় UI দেখুন। UI-এর জন্য ডিফল্ট পোর্ট হলো 4000, কিন্তু Firebase CLI দ্বারা আউটপুট হওয়া টার্মিনাল মেসেজগুলো পরীক্ষা করুন। উপলব্ধ এমুলেটরগুলোর অবস্থা লক্ষ্য করুন। আমাদের ক্ষেত্রে, Cloud Functions এবং Realtime Database এমুলেটরগুলো চালু থাকবে।
    আমার ছবি
  5. UI-তে, রিয়েলটাইম ডেটাবেস ট্যাবে, ডেটাবেস কন্টেন্ট এডিটর কন্ট্রোলগুলো ব্যবহার করে এক সেট নোড তৈরি করুন, যেখানে একটি messages নোডের ভেতরে একটি 'message1' নোড থাকবে, এবং সেই message1 ' নোডের ভেতরে আবার এমন একটি নোড থাকবে যার 'key' হবে original এবং 'value' হবে ' test '। এটি আমাদের ক্লাউড ফাংশনটিকে ট্রিগার করবে। লক্ষ্য করুন যে, কিছুক্ষণের মধ্যেই একটি নতুন uppercase প্রপার্টি দেখা যাবে, যার ভ্যালু হবে TEST
    আমার ছবিআমার ছবি
  6. আপনার ফাংশনটি ডাটাবেস আপডেট করার সময় কোনো ত্রুটি ছাড়াই চলেছে কিনা, তা নিশ্চিত করতে লগস ট্যাবটি দেখুন।

ইন-অ্যাপ ডাটাবেস অ্যাক্সেস কোডে হাত না দিয়ে, বা টেস্ট স্যুট রি-কম্পাইল ও রি-রান না করেই, আপনি আপনার ক্লাউড ফাংশন কোড এবং ইন্টারেক্টিভ ডাটাবেস এডিটের মধ্যে সহজেই পুনরাবৃত্তি করতে পারবেন, যতক্ষণ না আপনি আপনার কাঙ্ক্ষিত ডেটা ফ্লোটি পাচ্ছেন।

আপনার অ্যাপটিকে এমুলেটরগুলির সাথে সংযুক্ত করুন

যখন আপনি ইন্টারেক্টিভ প্রোটোটাইপিংয়ে যথেষ্ট অগ্রগতি করবেন এবং একটি ডিজাইন চূড়ান্ত করবেন, তখন আপনি উপযুক্ত SDK ব্যবহার করে আপনার অ্যাপে ডাটাবেস অ্যাক্সেস কোড যোগ করার জন্য প্রস্তুত হবেন। আপনার অ্যাপের আচরণ সঠিক আছে কিনা তা নিশ্চিত করতে আপনি Emulator Suite UI এর ডাটাবেস ট্যাব এবং ফাংশনগুলোর জন্য লগস ট্যাব ব্যবহার করতে থাকবেন।

মনে রাখবেন যে Local Emulator Suite একটি স্থানীয় ডেভেলপমেন্ট টুল। আপনার প্রোডাকশন ডেটাবেসে রাইট করলে, আপনি স্থানীয়ভাবে যে ফাংশনগুলোর প্রোটোটাইপিং করছেন, সেগুলো চালু হবে না।

আপনার অ্যাপকে ডেটাবেসে লেখার ক্ষমতা দিতে হলে, আপনাকে আপনার টেস্ট ক্লাস বা ইন-অ্যাপ কনফিগারেশনকে Realtime Database এমুলেটরের দিকে নির্দেশ করতে হবে।

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
সুইফট
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

কাস্টম স্ক্রিপ্ট দিয়ে আপনার টেস্টগুলো স্বয়ংক্রিয় করুন

এবার সামগ্রিক ওয়ার্কফ্লোর শেষ ধাপ। একবার আপনি অ্যাপের মধ্যে আপনার ফিচারের প্রোটোটাইপ তৈরি করে ফেললে এবং সেটি আপনার সব প্ল্যাটফর্মে আশাব্যঞ্জক মনে হলে, আপনি চূড়ান্ত বাস্তবায়ন এবং পরীক্ষার দিকে এগোতে পারেন। ইউনিট টেস্টিং এবং CI ওয়ার্কফ্লোর জন্য, আপনি exec কমান্ডের মাধ্যমে একটিমাত্র কলে এমুলেটর চালু করতে, স্ক্রিপ্টেড টেস্ট চালাতে এবং এমুলেটর বন্ধ করতে পারেন:

firebase emulators:exec "./testdir/test.sh"

স্বতন্ত্র এমুলেটরগুলো আরও গভীরভাবে অন্বেষণ করুন।

এখন যেহেতু আপনি দেখেছেন যে মৌলিক ক্লায়েন্ট-সাইড ওয়ার্কফ্লো দেখতে কেমন, আপনি স্যুটের অন্তর্ভুক্ত স্বতন্ত্র এমুলেটরগুলো সম্পর্কে বিস্তারিত জানতে পারেন, যার মধ্যে সার্ভার-সাইড অ্যাপ ডেভেলপমেন্টের জন্য সেগুলো কীভাবে ব্যবহার করতে হয় তাও রয়েছে:

এরপর কী?

উপরে লিঙ্ক করা নির্দিষ্ট এমুলেটর-সম্পর্কিত বিষয়গুলো অবশ্যই পড়ুন। তারপর: