Ruby — dynamický interpretovaný jazyk s elegantní syntaxí, známý frameworkem Ruby on Rails. V mobilním vývoji je Ruby používán především přes Fastlane — standardní nástroj pro automatizaci sestavení, testování a nasazení iOS a Android aplikací. Podle oficiální dokumentace Fastlane je nástroj používán ve více než 100 000 projektech po celém světě.
Hlavní body
Ruby — dynamický interpretovaný jazyk s otevřeným zdrojovým kódem, vytvořený Yukihirem Matsumotem v roce 1995. Hlavní princip Ruby — «optimální jednoduchost» (principle of least surprise). Jazyk je známý bloky (closures), čistým objektově orientovaným přístupem (všechno je objekt, včetně čísel) a výkonným systémem metaprogramování.
Ruby běží na interpretru YARV (Yet Another Ruby VM) s JIT kompilací od verze 3.1. Aktuální verze Ruby 3.4 (2025) zahrnuje dekorátory, vylepšený parser Prism a experimentální podporu typů přes RBS. RubyGems — správce balíčků — obsahuje více než 200 000 gemů.
Ruby on Rails — nejznámější webový framework v Ruby, ale v mobilním vývoji je Ruby používán jinak. Hlavní nika — Fastlane: ekosystém Ruby skriptů a gemů pro automatizaci všech fází životního cyklu mobilní aplikace: od podepisování certifikátů po publikaci v obchodech.
Pro práci s Fastlane stačí základní porozumění Ruby: metody, do-end bloky, symboly (:symbol) a syntaxe hashů { key: value }. Na rozdíl od Pythonu, Ruby používá end pro uzavírání bloků, ne odsazení. Metody mohou být volány bez závorek — to je aktivně využíváno v DSL Fastlane.
# Základní syntaxe Ruby používaná ve Fastlane
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")V příkladu metoda download_assets přijímá argument version a volitelný pojmenovaný parametr platform (výchozí ios). Interpolace řetězců přes #{} vkládá hodnoty přímo do řetězců. unless — opak if, provádí kód pokud je podmínka nepravdivá.
Fastlane — nástroj s otevřeným zdrojovým kódem, napsaný v Ruby. Instalovaný přes gem install fastlane, poskytuje sadu příkazů pro automatizaci nejrutinnějších úkolů mobilního vývojáře: vytváření snímků obrazovky, podepisování kódu, publikace v TestFlight a Google Play Console.
Fastlane se skládá z nástrojů (tools): sigh (správa certifikátů), match (synchronizace certifikátů v týmu), gym (sestavení iOS), gradle (sestavení Android), deliver (publikace iOS), supply (publikace Android), snapshot (snímky obrazovky), scan (testování). Všechny nástroje jsou přístupné z jednoho Fastfile.
Ve velkých projektech Fastlane zpracovává až 50+ akcí v jednom pipeline: zvýšení verze, stažení aktiv z CDN, sestavení, podepsání, nahrání do App Store Connect, odeslání oznámení do Slacku. Celý pipeline se provádí jedním příkazem: fastlane release.
Fastfile — soubor v Ruby-podobném DSL popisující posloupnost akcí (lane). Každý lane je samostatný úkol: beta (sestavení pro testování), release (vydání), screenshots (generování snímků obrazovky). Lane mohou volat jiné lane s předávanými parametry.
# Fastfile — konfigurace pipeline sestavení iOS aplikace
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Sestavení a nasazení TestFlight buildu"
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]} byl nahrán do TestFlight"
)
end
endLane beta provádí postupně: zvýšení čísla sestavení (increment_build_number), synchronizaci certifikátů (match), kompilaci archivu (gym), nahrání do TestFlight (upload_to_testflight) a odeslání oznámení do Slacku. Parametr :build je předán lane jako pojmenovaný argument.
Fastlane podporuje obě platformy v jednom Fastfile. Pro Android se používá lane uvnitř platform :android s akcemi gradle, supply a google_play_track_version_codes.
platform :android do
desc "Sestavení APK a publikace v 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 obsahuje více než 200 vestavěných akcí. Níže — nejdůležitější pro mobilní vývoj, rozdělené podle kategorií.
| Akce | Platforma | Účel |
|---|---|---|
| match | iOS | Synchronizace certifikátů a provisioning profilů přes Git |
| gym | iOS | Kompilace .app a .ipa archivu |
| scan | iOS | Spouštění UI testů na simulátoru |
| snapshot | iOS | Automatické generování snímků obrazovky na různých zařízeních |
| deliver | iOS | Nahrání buildů, snímků obrazovky a metadat do App Store Connect |
| pilot | iOS | Správa TestFlight: nahrání buildu, přidání testerů |
| gradle | Android | Spouštění Gradle úloh: assemble, test, bundle |
| supply | Android | Nahrání APK/AAB a metadat do Google Play Console |
| screengrab | Android | Automatické snímky obrazovky pro Google Play |
| firebase_app_distribution | Obě | Nahrání buildu do Firebase App Distribution |
match — gem Fastlane pro synchronizaci iOS certifikátů a provisioning profilů mezi vývojáři. Všechna tajemství jsou uložena v šifrovaném Git repozitáři nebo S3. Match automaticky generuje certifikáty pokud chybí a obnovuje je při vypršení platnosti.
# Inicializace match pro nový projekt
$ fastlane match init
# Vytvoření a synchronizace App Store certifikátů
$ fastlane match appstore
# Vytvoření Development certifikátů pro tým
$ fastlane match development
# Aktualizace všech certifikátů při vypršení platnosti
$ fastlane match --forceMatch ukládá soukromé klíče s heslem, které znají pouze vývojáři. Každý vývojář klonuje repozitář certifikátů a spouští match pro instalaci aktuálních profilů. Apple certifikáty jsou platné 1 rok, match je automaticky obnovuje.
Fastlane se integruje s libovolnými CI/CD platformami: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins a Xcode Cloud (přes xcode-build). Fastlane se spouští na CI přes fastlane <název_lane> a vrací chybový kód při selhání libovolného kroku.
Konfigurace pro GitHub Actions zahrnuje instalaci Ruby, fastlane a spuštění lane přes bundle exec fastlane. Pro iOS sestavení je vyžadován macOS runner. Pro Android lze použít ubuntu-latest, což je levnější.
# .github/workflows/deploy.yml — CI/CD s Fastlane
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 se spouští při push do main. macOS runner provádí bundle exec fastlane beta z Fastfile. MATCH_PASSWORD je předáno přes GitHub Secrets pro dešifrování certifikátů. Po dokončení lane odešle Slack akce oznámení.
RubyGems — správce balíčků pro Ruby. Fastlane je rozšiřován pomocí pluginů — gemů přidávajících nové akce. Plugin fastlane-plugin-versioning spravuje verze, fastlane-plugin-firebase_app_distribution nahrává buildy do Firebase. Na GitHubu je více než 500 Fastlane pluginů.
Gemfile v kořeni projektu fixuje verze všech závislostí pro reprodukovatelnost sestavení. bundle install instaluje gemy podle Gemfile.lock. Hlavní gemy pro mobilní vývoj: fastlane, cocoapods (iOS závislosti), xcodeproj (práce s .xcodeproj).
# Gemfile pro mobilní projekt
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 — není jediný nástroj pro automatizaci. Porovnejme jej s hlavními alternativami podle kritérií důležitých pro mobilní tým.
| Kritérium | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flexibilita | Maximální (kód) | Střední (steps) | Nízká (omezený) | Vysoká |
| iOS | Plná podpora | Plná | Plná (vestavěný) | Přes self-hosted macOS |
| Android | Plná podpora | Plná | Ne | Plná |
| Certifikáty (match) | Vestavěno | Přes Code Signing | Automaticky | Přes fastlane |
| Lokální spuštění | Ano | Ne (pouze CI) | Ne | Přes act |
| Pluginy | 500+ | 200+ integrací | Ne | 20 000+ akcí |
Fastlane zůstává nejflexibilnějším nástrojem pro složité pipeline. Bitrise je vhodný pro týmy bez Ruby vývojáře. Xcode Cloud — pro jednoduché iOS projekty. GitHub Actions — pokud tým již používá GitHub.
Často kladené otázky
Ruby není používán pro psaní mobilních aplikací, ale pro automatizaci procesů sestavení, testování a nasazení přes Fastlane. Fastlane je de facto standard pro CI/CD v iOS a Android vývoji.
Fastlane funguje na macOS, Linux a Windows, ale pro iOS sestavení je vyžadován Xcode a macOS. Android sestavení se provádějí na libovolné platformě. Lokálně vývojáři používají macOS, na CI — macOS pro iOS a Linux pro Android.
Základní porozumění Ruby je pro práci s Fastlane dostačující. Fastlane používá Ruby-podobné DSL ve Fastfile. Pro typické úkoly stačí znalost gemů, do-end bloků a základní syntaxe. Hluboká znalost Ruby není vyžadována.
Alternativy: Gradle pro Android (vestavěný), Xcode Cloud (Apple), Bitrise (webové rozhraní), GitHub Actions (YAML). Fastlane zůstává nejflexibilnějším nástrojem díky bohatému ekosystému akcí a pluginů.
Ano, Fastlane je používán velkými společnostmi. Všechny akce a konfigurační soubory jsou verzovány v repozitáři a match zajišťuje bezpečné ukládání certifikátů v repozitáři nebo S3.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také