Ruby — dinamik interpretatsiya qilinadigan til, nafis sintaksisga ega, Ruby on Rails freymvorki bilan tanilgan. Mobil ishlanmada Ruby birinchi navbatda Fastlane orqali qo‘llaniladi — iOS va Android ilovalarini qurish, testlash va joylashtirishni avtomatlashtirish uchun standart vosita. Fastlane rasmiy hujjatlariga ko‘ra, vosita dunyo bo‘ylab 100 000 dan ortiq loyihada qo‘llaniladi.
Asosiy ma’lumotlar
Ruby — 1995 yilda Yukihiro Matsumoto tomonidan yaratilgan ochiq kodli dinamik interpretatsiya qilinadigan til. Ruby ning asosiy printsipi — optimal soddalik (principle of least surprise). Til bloklar (closures), sof ob’ektga yo‘naltirilgan yondashuv (hamma narsa ob’ekt, shu jumladan raqamlar) va kuchli metaprogrammalashtirish tizimi bilan tanilgan.
Ruby 3.1 versiyasidan JIT kompilatsiyasi bilan YARV (Yet Another Ruby VM) interpretatorida ishlaydi. Joriy versiya Ruby 3.4 (2025) dekoratorlarni, yaxshilangan Prism parserini va RBS orqali eksperimental tip qo‘llab-quvvatlashni o‘z ichiga oladi. RubyGems — paket menejeri — 200 000 dan ortiq gemni o‘z ichiga oladi.
Ruby on Rails — Ruby dagi eng mashhur veb freymvork, ammo mobil ishlanmada Ruby boshqacha qo‘llaniladi. Asosiy joy — Fastlane: mobil ilova hayotiy siklining barcha bosqichlarini avtomatlashtirish uchun Ruby skriptlari va gemlari ekotizimi: sertifikatlarni imzolashdan do‘konlarda nashr qilishgacha.
Fastlane bilan ishlash uchun Ruby ni asosiy tushunish yetarli: metodlar, do-end bloklari, simvollar (:symbol) va hash sintaksisi { key: value }. Python dan farqli o‘laroq, Ruby bloklarni yopish uchun chekinish emas, balki end ishlatadi. Metodlar qavssiz chaqirilishi mumkin — bu Fastlane DSL da faol qo‘llaniladi.
# Fastlane da ishlatiladigan asosiy Ruby sintaksisi
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")Misolda download_assets metodi version argumentini va platform ixtiyoriy nomlangan parametrini qabul qiladi (standart ios). #{} orqali satr interpolyatsiyasi qiymatlarni to‘g‘ridan-to‘g‘ri satrlarga joylashtiradi. unless — if ning aksi, shart yolg‘on bo‘lsa kodni bajaradi.
Fastlane — Ruby da yozilgan ochiq kodli vosita. gem install fastlane orqali o‘rnatilganda, mobil dasturchining eng odatiy vazifalarini avtomatlashtirish uchun buyruqlar to‘plamini taqdim etadi: ekran tasvirlarini yaratish, kodni imzolash, TestFlight va Google Play Console da nashr qilish.
Fastlane vositalardan (tools) iborat: sigh (sertifikatlarni boshqarish), match (jamoada sertifikatlarni sinxronlashtirish), gym (iOS qurish), gradle (Android qurish), deliver (iOS nashr), supply (Android nashr), snapshot (ekran tasvirlari), scan (testlash). Barcha vositalar yagona Fastfile dan foydalanish mumkin.
Katta loyihalarda Fastlane bir quvurda 50+ actionni boshqaradi: versiyani oshirish, CDN dan aktivlarni yuklash, qurish, imzolash, App Store Connect ga yuklash, Slack ga bildirishnoma yuborish. Butun quvur bitta buyruq bilan bajariladi: fastlane release.
Fastfile — harakatlar ketma-ketligini (lane) tavsiflovchi Ruby-ga o‘xshash DSL dagi fayl. Har bir lane alohida vazifa: beta (test uchun qurish), release (chop etish), screenshots (ekran tasvirlarini yaratish). Lanelar uzatiladigan parametrlar bilan boshqa lanelarni chaqirishi mumkin.
# Fastfile — iOS ilovasi qurilish quvurining konfiguratsiyasi
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlight buildini qurish va joylashtirish"
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 ga yuklandi"
)
end
endBeta lane ketma-ket bajaradi: qurish raqamini oshirish (increment_build_number), sertifikatlarni sinxronlashtirish (match), arxivni kompilatsiya qilish (gym), TestFlight ga yuklash (upload_to_testflight) va Slack ga bildirishnoma yuborish. :build parametri lane ga nomlangan argument sifatida uzatiladi.
Fastlane bir Fastfile da ikkala platformani qo‘llab-quvvatlaydi. Android uchun platform :android ichida gradle, supply va google_play_track_version_codes actionlari bilan lane ishlatiladi.
platform :android do
desc "APK qurish va Google Play Internal Testing da nashr qilish"
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 dan ortiq o‘rnatilgan actionni o‘z ichiga oladi. Quyida — mobil ishlanma uchun eng muhimlari, kategoriyalarga bo‘lingan holda.
| Action | Platforma | Maqsad |
|---|---|---|
| match | iOS | Git orqali sertifikatlar va provisioning profillarini sinxronlashtirish |
| gym | iOS | .app va .ipa arxivini kompilatsiya qilish |
| scan | iOS | Simulyatorda UI testlarini ishga tushirish |
| snapshot | iOS | Turli qurilmalarda avtomatik ekran tasvirlarini yaratish |
| deliver | iOS | App Store Connect ga build, ekran tasvirlari va metama’lumotlarni yuklash |
| pilot | iOS | TestFlight ni boshqarish: build yuklash, testchilarni qo‘shish |
| gradle | Android | Gradle vazifalarini ishga tushirish: assemble, test, bundle |
| supply | Android | Google Play Console ga APK/AAB va metama’lumotlarni yuklash |
| screengrab | Android | Google Play uchun avtomatik ekran tasvirlari |
| firebase_app_distribution | Ikkalasi | Firebase App Distribution ga build yuklash |
match — dasturchilar o‘rtasida iOS sertifikatlari va provisioning profillarini sinxronlashtirish uchun Fastlane gemi. Barcha sirlar shifrlangan Git repozitoriy yoki S3 da saqlanadi. Match sertifikatlar yo‘q bo‘lsa ularni avtomatik yaratadi va muddati tugaganda yangilaydi.
# Yangi loyiha uchun match ni ishga tushirish
$ fastlane match init
# App Store sertifikatlarini yaratish va sinxronlashtirish
$ fastlane match appstore
# Jamoa uchun Development sertifikatlarini yaratish
$ fastlane match development
# Muddati tugaganda barcha sertifikatlarni yangilash
$ fastlane match --forceMatch faqat dasturchilar biladigan parol iborasi bilan shaxsiy kalitlarni saqlaydi. Har bir dasturchi sertifikat repozitoriyini klonlaydi va joriy profillarni o‘rnatish uchun match ni ishga tushiradi. Apple sertifikatlari 1 yil amal qiladi, match ularni avtomatik yangilaydi.
Fastlane har qanday CI/CD platformasi bilan integratsiyalanadi: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins va Xcode Cloud (xcode-build orqali). Fastlane CI da fastlane <lane_nomi> orqali ishga tushiriladi va har qanday qadam muvaffaqiyatsiz bo‘lsa xato kodi qaytaradi.
GitHub Actions uchun konfiguratsiya Ruby, fastlane o‘rnatish va bundle exec fastlane orqali lane ni ishga tushirishni o‘z ichiga oladi. iOS qurish uchun macOS runner talab qilinadi. Android uchun ubuntu-latest ishlatilishi mumkin, bu arzonroq.
# .github/workflows/deploy.yml — Fastlane bilan 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 }}Workflow main ga push qilinganda ishga tushadi. macOS runner Fastfile dan bundle exec fastlane beta ni bajaradi. MATCH_PASSWORD GitHub Secrets orqali sertifikatlarni shifrdan chiqarish uchun uzatiladi. Lane tugagach, Slack action bildirishnoma yuboradi.
RubyGems — Ruby uchun paket menejeri. Fastlane plaginlar orqali kengaytiriladi — yangi actionlar qo‘shadigan gemlar. fastlane-plugin-versioning plagini versiyalarni boshqaradi, fastlane-plugin-firebase_app_distribution buildlarni Firebase ga yuklaydi. GitHub da 500 dan ortiq Fastlane plagini mavjud.
Loyiha ildizidagi Gemfile qurilishlarning takrorlanuvchanligi uchun barcha bog‘liqliklar versiyalarini belgilaydi. bundle install Gemfile.lock ga muvofiq gemlarni o‘rnatadi. Mobil ishlanma uchun asosiy gemlar: fastlane, cocoapods (iOS bog‘liqliklari), xcodeproj (.xcodeproj bilan ishlash).
# Mobil loyiha uchun 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 — yagona avtomatlashtirish vositasi emas. Keling, uni mobil jamoa uchun muhim mezonlar bo‘yicha asosiy alternativalar bilan taqqoslaylik.
| Mezon | Fastlane (Ruby) | Bitrise (veb) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Moslashuvchanlik | Maksimal (kod) | O‘rta (steps) | Past (cheklangan) | Yuqori |
| iOS | To‘liq qo‘llab-quvvatlash | To‘liq | To‘liq (o‘rnatilgan) | Self-hosted macOS orqali |
| Android | To‘liq qo‘llab-quvvatlash | To‘liq | Yo‘q | To‘liq |
| Sertifikatlar (match) | O‘rnatilgan | Code Signing orqali | Avtomatik | Fastlane orqali |
| Mahalliy ishga tushirish | Ha | Yo‘q (faqat CI) | Yo‘q | act orqali |
| Plaginlar | 500+ | 200+ integratsiya | Yo‘q | 20 000+ action |
Fastlane murakkab quvurlar uchun eng moslashuvchan vosita bo‘lib qolmoqda. Bitrise Ruby dasturchisi bo‘lmagan jamoalar uchun qulay. Xcode Cloud — oddiy iOS loyihalari uchun. GitHub Actions — agar jamoa allaqachon GitHub ni ishlatsa.
Tez-tez so‘raladigan savollar
Ruby mobil ilovalarni yozish uchun emas, balki Fastlane orqali qurish, testlash va joylashtirish jarayonlarini avtomatlashtirish uchun ishlatiladi. Fastlane iOS va Android ishlanmasida CI/CD uchun de-fakto standartdir.
Fastlane macOS, Linux va Windows da ishlaydi, ammo iOS qurish uchun Xcode va macOS talab qilinadi. Android qurilishlari istalgan platformada bajariladi. Mahalliy dasturchilar macOS dan foydalanadi, CI da — iOS uchun macOS va Android uchun Linux.
Ruby ni asosiy tushunish Fastlane bilan ishlash uchun yetarli. Fastlane Fastfile da Ruby-ga o‘xshash DSL dan foydalanadi. Oddiy vazifalar uchun gemlar, do-end bloklari va asosiy sintaksisni bilish yetarli. Ruby ni chuqur bilish talab qilinmaydi.
Alternativlar: Android uchun Gradle (o‘rnatilgan), Xcode Cloud (Apple), Bitrise (veb interfeys), GitHub Actions (YAML). Fastlane boy action va plagin ekotizimi tufayli eng moslashuvchan vosita bo‘lib qolmoqda.
Ha, Fastlane katta kompaniyalar tomonidan ishlatiladi. Barcha actionlar va konfiguratsiya fayllari repozitorda versiyalanadi, match esa sertifikatlarni repozitor yoki S3 da xavfsiz saqlashni ta‘minlaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.