Ruby — dinamik interpretasiya olunan dil, zərif sintaksisə malikdir, Ruby on Rails çərçivəsi ilə tanınır. Mobil inkişafda Ruby ilk növbədə Fastlane vasitəsilə istifadə olunur — iOS və Android tətbiqlərinin bina, test və yerləşdirilməsinin avtomatlaşdırılması üçün standart alət. Fastlane rəsmi sənədlərinə görə, alət dünyada 100 000-dən çox layihədə istifadə olunur.
Əsas məqamlar
Ruby — 1995-ci ildə Yukihiro Matsumoto tərəfindən yaradılmış açıq mənbəli dinamik interpretasiya olunan dil. Ruby-nin əsas prinsipi — optimal sadəlik (principle of least surprise). Dil bloklar (closures), təmiz obyekt yönümlü yanaşma (hər şey obyektdir, o cümlədən rəqəmlər) və güclü metaproqramlaşdırma sistemi ilə tanınır.
Ruby 3.1 versiyasından JIT kompilasiyası ilə YARV (Yet Another Ruby VM) interpretatorunda işləyir. Cari versiya Ruby 3.4 (2025) dekoratorları, təkmilləşdirilmiş Prism parserini və RBS vasitəsilə eksperimental tip dəstəyini əhatə edir. RubyGems — paket meneceri — 200 000-dən çox gem ehtiva edir.
Ruby on Rails — Ruby-də ən məşhur veb çərçivədir, lakin mobil inkişafda Ruby fərqli şəkildə tətbiq olunur. Əsas niş — Fastlane: mobil tətbiqin həyat dövrünün bütün mərhələlərini avtomatlaşdırmaq üçün Ruby skriptləri və gemlər ekosistemi: sertifikatların imzalanmasından mağazalarda nəşrə qədər.
Fastlane ilə iş üçün Ruby-nin əsas anlayışı kifayətdir: metodlar, do-end blokları, simvollar (:symbol) və hash sintaksisi { key: value }. Python-dan fərqli olaraq, Ruby blokları bağlamaq üçün abzas deyil, end istifadə edir. Metodlar mötərizəsiz çağrıla bilər — bu Fastlane DSL-də fəal şəkildə istifadə olunur.
# Fastlane-də istifadə olunan əsas 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")Nümunədə download_assets metodu version arqumentini və platform isteğe bağlı adlandırılmış parametrini qəbul edir (standart olaraq ios). #{...} vasitəsilə sətir interpolasiyası dəyərləri birbaşa sətirlərə yerləşdirir. unless if-in əksidir, şərt yalan olduqda kodu icra edir.
Fastlane — Ruby ilə yazılmış açıq mənbəli alət. gem install fastlane vasitəsilə qurulduqda, mobil tərtibatçının ən rutin vəzifələrini avtomatlaşdırmaq üçün əmrlər dəsti təqdim edir: ekran görüntülərinin yaradılması, kodun imzalanması, TestFlight və Google Play Console-da nəşr.
Fastlane alətlərdən (tools) ibarətdir: sigh (sertifikatların idarə edilməsi), match (komandada sertifikatların sinxronizasiyası), gym (iOS bina), gradle (Android bina), deliver (iOS nəşr), supply (Android nəşr), snapshot (ekran görüntüləri), scan (test). Bütün alətlər vahid Fastfile-dan əlçatandır.
Böyük layihələrdə Fastlane bir boru kəmərində 50+ action idarə edir: versiya artımı, CDN-dən aktivlərin yüklənməsi, bina, imzalama, App Store Connect-ə yükləmə, Slack-ə bildiriş göndərmə. Bütün boru kəməri bir əmrlə yerinə yetirilir: fastlane release.
Fastfile — hərəkətlərin ardıcıllığını (lane) təsvir edən Ruby bənzəri DSL-də fayl. Hər lane ayrı bir tapşırıqdır: beta (test üçün bina), release (buraxılış), screenshots (ekran görüntülərinin yaradılması). Lane-lər ötürülən parametrlərlə digər lane-ləri çağıra bilər.
# Fastfile — iOS tətbiqi bina boru kəmərinin konfiqurasiyası
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlight buildinin bina və yerləşdirilməsi"
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-a yükləndi"
)
end
endBeta lane ardıcıl olaraq yerinə yetirir: bina nömrəsinin artımı (increment_build_number), sertifikatların sinxronizasiyası (match), arxivin kompilasiyası (gym), TestFlight-a yükləmə (upload_to_testflight) və Slack-ə bildiriş göndərmə. :build parametri lane-ə adlandırılmış arqument kimi ötürülür.
Fastlane bir Fastfile-da hər iki platformanı dəstəkləyir. Android üçün platform :android daxilində gradle, supply və google_play_track_version_codes actions ilə lane istifadə olunur.
platform :android do
desc "APK bina və Google Play Internal Testing-də nəşr"
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-dən çox daxili action ehtiva edir. Aşağıda — mobil inkişaf üçün ən vacibləri, kateqoriyalara bölünmüş şəkildə.
| Action | Platforma | Təyinat |
|---|---|---|
| match | iOS | Git vasitəsilə sertifikatların və provisioning profillərin sinxronizasiyası |
| gym | iOS | .app və .ipa arxivinin kompilasiyası |
| scan | iOS | Simulyatorda UI testlərinin işə salınması |
| snapshot | iOS | Müxtəlif cihazlarda avtomatik ekran görüntülərinin yaradılması |
| deliver | iOS | App Store Connect-ə build, ekran görüntüləri və metadata yükləmə |
| pilot | iOS | TestFlight idarəsi: build yükləmə, testçilər əlavə etmə |
| gradle | Android | Gradle tapşırıqlarının işə salınması: assemble, test, bundle |
| supply | Android | Google Play Console-a APK/AAB və metadata yükləmə |
| screengrab | Android | Google Play üçün avtomatik ekran görüntüləri |
| firebase_app_distribution | Hər ikisi | Firebase App Distribution-a build yükləmə |
match — tərtibatçılar arasında iOS sertifikatlarının və provisioning profillərin sinxronizasiyası üçün Fastlane gemi. Bütün sirlər şifrələnmiş Git deposunda və ya S3-də saxlanılır. Match sertifikatlar çatışmadıqda onları avtomatik yaradır və müddəti bitdikdə yeniləyir.
# Yeni layihə üçün match-in işə salınması
$ fastlane match init
# App Store sertifikatlarının yaradılması və sinxronizasiyası
$ fastlane match appstore
# Komanda üçün Development sertifikatlarının yaradılması
$ fastlane match development
# Müddəti bitdikdə bütün sertifikatların yenilənməsi
$ fastlane match --forceMatch yalnız tərtibatçıların bildiyi parol ifadəsi ilə şəxsi açarları saxlayır. Hər tərtibatçı sertifikat deposunu klonlayır və cari profilləri quraşdırmaq üçün match-i işə salır. Apple sertifikatlarının müddəti 1 ildir, match onları avtomatik yeniləyir.
Fastlane istənilən CI/CD platformaları ilə inteqrasiya olunur: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins və Xcode Cloud (xcode-build vasitəsilə). Fastlane CI-də fastlane <lane_name> vasitəsilə işə salınır və hər hansı addım uğursuz olduqda xəta kodu qaytarır.
GitHub Actions üçün konfiqurasiya Ruby, fastlane quraşdırılması və bundle exec fastlane vasitəsilə lane işə salınmasını əhatə edir. iOS bina üçün macOS runner tələb olunur. Android üçün ubuntu-latest istifadə oluna bilər, bu daha ucuzdur.
# .github/workflows/deploy.yml — Fastlane ilə 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-ə push zamanı işə düşür. macOS runner Fastfile-dan bundle exec fastlane beta icra edir. MATCH_PASSWORD GitHub Secrets vasitəsilə sertifikatların şifrəsini açmaq üçün ötürülür. Lane başa çatdıqdan sonra Slack action bildiriş göndərir.
RubyGems — Ruby üçün paket meneceri. Fastlane plaginlər vasitəsilə genişləndirilir — yeni actions əlavə edən gemlər. fastlane-plugin-versioning plagin versiyaları idarə edir, fastlane-plugin-firebase_app_distribution build-ları Firebase-ə yükləyir. GitHub-da 500-dən çox Fastlane plagin var.
Layihənin kökündə Gemfile binaların təkrarlanması üçün bütün asılılıqların versiyalarını müəyyən edir. bundle install Gemfile.lock-a uyğun gemləri quraşdırır. Mobil inkişaf üçün əsas gemlər: fastlane, cocoapods (iOS asılılıqları), xcodeproj (.xcodeproj ilə iş).
# Mobil layihə üçün 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 — yeganə avtomatlaşdırma aləti deyil. Onu mobil komanda üçün vacib meyarlara görə əsas alternativlərlə müqayisə edək.
| Meyar | Fastlane (Ruby) | Bitrise (veb) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Çeviklik | Maksimal (kod) | Orta (steps) | Aşağı (məhdud) | Yüksək |
| iOS | Tam dəstək | Tam | Tam (daxili) | Self-hosted macOS vasitəsilə |
| Android | Tam dəstək | Tam | Yox | Tam |
| Sertifikatlar (match) | Daxili | Code Signing vasitəsilə | Avtomatik | Fastlane vasitəsilə |
| Yerli işə salma | Bəli | Xeyr (yalnız CI) | Xeyr | act vasitəsilə |
| Plaginlər | 500+ | 200+ inteqrasiya | Yox | 20 000+ action |
Fastlane mürəkkəb boru kəmərləri üçün ən çevik alət olaraq qalır. Bitrise Ruby tərtibatçısı olmayan komandalar üçün əlverişlidir. Xcode Cloud — sadə iOS layihələri üçün. GitHub Actions — komanda artıq GitHub istifadə edirsə.
Tez-tez verilən suallar
Ruby mobil tətbiqlərin yazılması üçün deyil, Fastlane vasitəsilə bina, test və yerləşdirmə proseslərinin avtomatlaşdırılması üçün istifadə olunur. Fastlane iOS və Android inkişafında CI/CD üçün de-fakto standartdır.
Fastlane macOS, Linux və Windows-da işləyir, lakin iOS bina üçün Xcode və macOS tələb olunur. Android binalar istənilən platformada yerinə yetirilir. Yerli olaraq tərtibatçılar macOS, CI-da iOS üçün macOS və Android üçün Linux istifadə edirlər.
Ruby əsas anlayışı Fastlane ilə iş üçün kifayətdir. Fastlane Fastfile-da Ruby bənzəri DSL istifadə edir. Tipik tapşırıqlar üçün gemlər, do-end blokları və əsas sintaksis bilikləri kifayətdir. Ruby-nin dərindən bilinməsi tələb olunmur.
Alternativlər: Android üçün Gradle (daxili), Xcode Cloud (Apple), Bitrise (veb interfeys), GitHub Actions (YAML). Fastlane zəngin action və plagin ekosistemi sayəsində ən çevik alət olaraq qalır.
Bəli, Fastlane böyük şirkətlər tərəfindən istifadə olunur. Bütün action və konfiqurasiya faylları depoda versiyalanır, match isə depoda və ya S3-də sertifikatların təhlükəsiz saxlanmasını təmin edir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun