Ruby ایک متحرک تفسیری زبان ہے جس کا سنٹیکس خوب ہے، جو Ruby on Rails فریم ورک کے لیے مشہور ہے۔ موبائل ڈویلپمنٹ میں، Ruby بنیادی طور پر Fastlane کے ذریعے استعمال ہوتی ہے — iOS اور Android ایپلیکیشنز کی بلڈ، ٹیسٹنگ اور ڈپلوئمنٹ کو آٹومیٹ کرنے کا معیاری ٹول۔ Fastlane کی سرکاری دستاویزات کے مطابق، یہ ٹول دنیا بھر میں 100,000 سے زیادہ منصوبوں میں استعمال ہوتا ہے۔
اہم نکات
Ruby ایک متحرک تفسیری اوپن سورس زبان ہے جو یوکیہیرو ماتسوموتو نے 1995 میں تیار کی تھی۔ Ruby کا بنیادی اصول "بہترین سادگی" (کم سے کم حیرت کا اصول) ہے۔ یہ زبان بلاکس (کلوزر)، خالص آبجیکٹ اورینٹڈ اپروچ (سب کچھ ایک آبجیکٹ ہے، اعداد سمیت) اور ایک طاقتور میٹا پروگرامنگ سسٹم کے لیے مشہور ہے۔
Ruby ورژن 3.1 سے JIT ترتیب کے ساتھ YARV (Yet Another Ruby VM) تفسیر کرنے پر چلتی ہے۔ موجودہ ورژن Ruby 3.4 (2025) میں ڈیکوریٹرز، بہتر Prism پارسر اور RBS کے ذریعے تجرباتی ٹائپ سپورٹ شامل ہے۔ RubyGems — پیکیج مینیجر — میں 200,000 سے زیادہ gems ہیں۔
Ruby on Rails Ruby میں بنایا گیا سب سے مشہور ویب فریم ورک ہے، لیکن موبائل ڈویلپمنٹ میں Ruby مختلف طریقے سے استعمال ہوتی ہے۔ اس کا بنیادی میدان Fastlane ہے: کوڈ سائننگ سے لے کر اسٹور پر اشاعت تک موبائل ایپ کے لائف سائیکل کے تمام مراحل کو آٹومیٹ کرنے کے لیے Ruby اسکرپٹس اور gems کا ایک ایکو سسٹم۔
Fastlane کے ساتھ کام کرنے کے لیے صرف Ruby کی بنیادی سمجھ بوجھ ضروری ہے: میتھڈز، do-end بلاکس، سمبلز (:symbol) اور ہیش سنٹیکس { key: value }۔ Python کے برعکس، Ruby انڈینٹیشن کے بجائے بلاکس کو بند کرنے کے لیے end استعمال کرتی ہے۔ میتھڈز کو قوسین کے بغیر بلایا جا سکتا ہے — یہ Fastlane DSL میں فعال طور پر استعمال ہوتا ہے۔
# Fastlane میں استعمال کیا جانے والا بنیادی Ruby سنٹیکس
def download_assets(version, platform: "ios")
paths = {
ios: "ios/Assets.car",
android: "android/app/src/main/assets"
}
url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
puts "Downloading from: #{url}"
unless File.exist?("temp/assets")
Dir.mkdir("temp/assets")
end
result = system("curl -o temp/assets.zip #{url}")
raise "Download failed" unless result
end
download_assets("1.2.3", platform: "android")مثال میں، download_assets میتھڈ ایک version آرگومنٹ اور ایک اختیاری نامی پیرامیٹر platform (ڈیفالٹ "ios") لیتی ہے۔ #{...} کے ساتھ سٹرنگ انٹرپولیشن ویلیوز کو براہ راست سٹرنگز میں ایمبیڈ کرتی ہے۔ unless، if کے برعکس ہے — یہ کوڈ اس وقت چلاتی ہے جب شرط غلط ہو۔
Fastlane Ruby میں لکھا گیا ایک اوپن سورس ٹول ہے۔ gem install fastlane کے ذریعے انسٹال کیا جاتا ہے، یہ موبائل ڈویلپر کے سب سے معمولی کاموں کو آٹومیٹ کرنے کے لیے کمانڈز کا ایک سیٹ فراہم کرتا ہے: اسکرین شاٹ بنانا، کوڈ سائننگ، TestFlight اور Google Play Console میں اشاعت۔
Fastlane ٹولز پر مشتمل ہے: sigh (سرٹیفکیٹ مینجمنٹ)، match(ٹیموں میں سرٹیفکیٹ سنکرونائزیشن)، gym (iOS بلڈ)، gradle (Android بلڈ)، deliver (iOS اشاعت)، supply (Android اشاعت)، snapshot (اسکرین شاٹس)، scan (ٹیسٹنگ)۔ تمام ٹولز ایک ہی Fastfile سے قابل رسائی ہیں۔
بڑے منصوبوں میں، Fastlane ایک پائپ لائن میں 50+ کارروائیاں سنبھالتا ہے: ورژن اضافہ، CDN سے اثاثہ ڈاؤن لوڈ، بلڈ، سائننگ، App Store Connect پر اپ لوڈ، Slack اطلاع بھیجنا۔ پوری پائپ لائن ایک کمانڈ سے چلتی ہے: fastlane release۔
Fastfile ایک Ruby جیسی DSL فائل ہے جو کارروائیوں (لین) کی ترتیب بیان کرتی ہے۔ ہر لین ایک الگ کام ہے: beta (ٹیسٹ بلڈ)، release، screenshots۔ لین منتقل کردہ پیرامیٹرز کے ساتھ دوسری لین کو بلا سکتی ہیں۔
# Fastfile — iOS ایپ بلڈ پائپ لائن ترتیب
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlight بلڈ بنانا اور ڈپلائے کرنا"
lane :beta do |options|
increment_build_number(
build_number: options[:build]
)
match(type: :appstore)
gym(
scheme: "MyApp",
export_method: "app-store",
configuration: "Release"
)
upload_to_testflight(
app_identifier: "com.example.myapp"
)
slack(
message: "Build #{options[:build]} TestFlight پر اپ لوڈ ہوگیا"
)
end
endبیٹا لین ترتیب وار عمل کرتی ہے: بلڈ نمبر بڑھانا (increment_build_number)، سرٹیفکیٹ سنک (match)، آرکائیو بنانا (gym)، TestFlight پر اپ لوڈ (upload_to_testflight) اور Slack اطلاع بھیجنا۔ :build پیرامیٹر ایک نامی آرگومنٹ کے طور پر لین کو منتقل کیا جاتا ہے۔
Fastlane ایک ہی Fastfile میں دونوں پلیٹ فارمز کو سپورٹ کرتا ہے۔ Android کے لیے، platform :android کے اندر gradle، supply اور google_play_track_version_codes کارروائیوں کے ساتھ ایک لین استعمال کریں۔
platform :android do
desc "APK بنانا اور Google Play Internal Testing میں شائع کرنا"
lane :beta do
gradle(
task: "assemble",
build_type: "Release",
flavor: "Production"
)
supply(
track: "internal",
apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
)
end
endFastlane میں 200 سے زیادہ بلٹ ان کارروائیاں شامل ہیں۔ نیچے موبائل ڈویلپمنٹ کے لیے سب سے اہم ہیں، زمرے کے مطابق ترتیب دی گئیں۔
| کارروائی | پلیٹ فارم | مقصد |
|---|---|---|
| match | iOS | Git کے ذریعے سرٹیفکیٹ اور پروویژننگ پروفائل سنک کریں |
| gym | iOS | .app اور .ipa آرکائیو بنائیں |
| scan | iOS | سیمولیٹر پر UI ٹیسٹ چلائیں |
| snapshot | iOS | مختلف آلات پر خودکار اسکرین شاٹ جنریشن |
| deliver | iOS | بلڈ، اسکرین شاٹس اور میٹا ڈیٹا App Store Connect پر اپ لوڈ کریں |
| pilot | iOS | TestFlight مینجمنٹ: بلڈ اپ لوڈ، ٹیسٹر شامل کریں |
| gradle | Android | Gradle کام چلائیں: assemble, test, bundle |
| supply | Android | APK/AAB اور میٹا ڈیٹا Google Play Console پر اپ لوڈ کریں |
| screengrab | Android | Google Play کے لیے خودکار اسکرین شاٹس |
| firebase_app_distribution | دونوں | Firebase App Distribution پر بلڈ اپ لوڈ کریں |
match ڈویلپرز کے درمیان iOS سرٹیفکیٹ اور پروویژننگ پروفائل کو سنکرونائز کرنے کے لیے ایک Fastlane gem ہے۔ تمام راز ایک انکرپٹڈ Git ریپوزٹری یا S3 میں محفوظ ہوتے ہیں۔ Match خود بخود سرٹیفکیٹ بناتا ہے اگر وہ غائب ہیں اور میعاد ختم ہونے پر تجدید کرتا ہے۔
# نئے منصوبے کے لیے match شروع کرنا
$ fastlane match init
# App Store سرٹیفکیٹ بنانا اور سنک کرنا
$ fastlane match appstore
# ٹیم کے لیے Development سرٹیفکیٹ بنانا
$ fastlane match development
# میعاد ختم ہونے پر تمام سرٹیفکیٹ تجدید کرنا
$ fastlane match --forceMatch پرائیویٹ کیز کو ایک پاسفریز کے ساتھ محفوظ کرتا ہے جو صرف ڈویلپرز جانتے ہیں۔ ہر ڈویلپر سرٹیفکیٹ ریپوزٹری کو کلون کرتا ہے اور موجودہ پروفائل انسٹال کرنے کے لیے match چلاتا ہے۔ Apple سرٹیفکیٹ 1 سال کے لیے درست ہیں؛ Match خود بخود ان کی تجدید کرتا ہے۔
Fastlane کسی بھی CI/CD پلیٹ فارم کے ساتھ ضم ہوتا ہے: GitHub Actions، GitLab CI، CircleCI، Bitrise، Jenkins اور Xcode Cloud (xcode-build کے ذریعے)۔ Fastlane CI پر fastlane <lane_name> استعمال کرکے چلتا ہے اور کسی مرحلے کی ناکامی پر ایرر کوڈ لوٹاتا ہے۔
GitHub Actions سیٹ اپ میں Ruby، fastlane انسٹال کرنا اور bundle exec fastlane کے ذریعے لین چلانا شامل ہے۔ iOS بلڈ کے لیے macOS رنر ضروری ہے۔ Android بلڈ ubuntu-latest استعمال کر سکتے ہیں، جو سستا ہے۔
# .github/workflows/deploy.yml — Fastlane کے ساتھ CI/CD
name: Deploy Mobile App
on:
push:
branches: [main]
jobs:
ios-deploy:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- run: bundle install
- run: bundle exec fastlane beta
- env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}ورک فلو main پر پش کرنے پر چلتا ہے۔ macOS رنر Fastfile سے bundle exec fastlane beta چلاتا ہے۔ MATCH_PASSWORD سرٹیفکیٹ ڈیکریپشن کے لیے GitHub Secrets کے ذریعے منتقل کی جاتی ہے۔ لین مکمل ہونے کے بعد، ایک Slack کارروائی اطلاع بھیجتی ہے۔
RubyGems Ruby کے لیے پیکیج مینیجر ہے۔ Fastlane پلگ ان کے ذریعے توسیع کی جاتی ہے — gems جو نئی کارروائیاں شامل کرتی ہیں۔ fastlane-plugin-versioning پلگ ان ورژن کو منظم کرتا ہے، fastlane-plugin-firebase_app_distribution بلڈز کو Firebase پر اپ لوڈ کرتا ہے۔ GitHub پر 500 سے زیادہ Fastlane پلگ ان ہیں۔
پروجیکٹ روٹ پر Gemfile دوبارہ پیدا ہونے والی بلڈز کے لیے تمام انحصار کے ورژن مقرر کرتی ہے۔ bundle install Gemfile.lock سے gems انسٹال کرتی ہے۔ موبائل ڈویلپمنٹ کے لیے ضروری gems میں شامل ہیں: fastlane، cocoapods (iOS انحصار)، xcodeproj (.xcodeproj ہیرا پھیری)۔
# موبائل منصوبے کے لیے Gemfile
source "https://rubygems.org"
gem "fastlane", "~> 2.220"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)Fastlane واحد آٹومیشن ٹول نہیں ہے۔ آئیے موبائل ٹیم کے لیے اہم معیار کی بنیاد پر اہم متبادلات سے موازنہ کریں۔
| معیار | Fastlane (Ruby) | Bitrise (ویب) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| لچک | زیادہ سے زیادہ (کوڈ) | درمیانی (مراحل) | کم (محدود) | اعلی |
| iOS | مکمل سپورٹ | مکمل | مکمل (بلٹ ان) | سیلف ہوسٹڈ macOS کے ذریعے |
| Android | مکمل سپورٹ | مکمل | نہیں | مکمل |
| سرٹیفکیٹ (match) | بلٹ ان | Code Signing کے ذریعے | خودکار | fastlane کے ذریعے |
| مقامی عملدرآمد | ہاں | نہیں (صرف CI) | نہیں | act کے ذریعے |
| پلگ ان | 500+ | 200+ انضمام | کوئی نہیں | 20,000+ کارروائیاں |
Fastlane پیچیدہ پائپ لائنز کے لیے سب سے لچکدار ٹول ہے۔ Bitrise ان ٹیموں کے لیے آسان ہے جن کے پاس Ruby ڈویلپر نہیں ہے۔ Xcode Cloud سادہ iOS منصوبوں کے لیے کام کرتا ہے۔ GitHub Actions مثالی ہے اگر ٹیم پہلے سے GitHub استعمال کرتی ہے۔
اکثر پوچھے گئے سوالات
Ruby موبائل ایپلیکیشن لکھنے کے لیے نہیں، بلکہ Fastlane کے ذریعے بلڈ، ٹیسٹنگ اور ڈپلائمنٹ کے عمل کو آٹومیٹ کرنے کے لیے استعمال ہوتی ہے۔ Fastlane iOS اور Android ڈویلپمنٹ میں CI/CD کا حقیقی معیار ہے۔
Fastlane macOS، Linux اور Windows پر کام کرتا ہے، لیکن iOS بلڈ کے لیے Xcode اور macOS کی ضرورت ہے۔ Android بلڈ کسی بھی پلیٹ فارم پر چل سکتے ہیں۔ ڈویلپر مقامی طور پر macOS استعمال کرتے ہیں، اور CI پر — iOS کے لیے macOS اور Android کے لیے Linux۔
Fastlane کے ساتھ کام کرنے کے لیے Ruby کی بنیادی سمجھ بوجھ کافی ہے۔ Fastlane Fastfile میں Ruby جیسی DSL استعمال کرتا ہے۔ عام کاموں کے لیے، gems، do-end بلاکس اور بنیادی سنٹیکس کا علم کافی ہے۔ گہری Ruby علم کی ضرورت نہیں ہے۔
متبادل: Gradle Android کے لیے (بلٹ ان)، Xcode Cloud (Apple)، Bitrise (ویب انٹرفیس)، GitHub Actions (YAML)۔ Fastlane کارروائیوں اور پلگ ان کے بھرپور ایکو سسٹم کی بدولت سب سے لچکدار ٹول ہے۔
ہاں، Fastlane بڑی کمپنیاں استعمال کرتی ہیں۔ تمام کارروائیاں اور ترتیب فائلیں ریپوزٹری میں ورژن کی جاتی ہیں، اور match ریپوزٹری یا S3 میں سرٹیفکیٹ کا محفوظ ذخیرہ یقینی بناتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔