Ruby — een dynamische geïnterpreteerde taal met een elegante syntaxis, bekend van het Ruby on Rails-framework. In mobiele ontwikkeling wordt Ruby vooral gebruikt via Fastlane — de standaardtool voor het automatiseren van builds, testen en implementatie van iOS- en Android-apps. Volgens de officiële Fastlane-documentatie wordt de tool gebruikt in meer dan 100.000 projecten wereldwijd.
Belangrijkste punten
Ruby — een dynamische geïnterpreteerde taal met open source, gecreëerd door Yukihiro Matsumoto in 1995. Het basisprincipe van Ruby — «optimale eenvoud» (principle of least surprise). De taal staat bekend om blokken (closures), een pure objectgeoriënteerde benadering (alles is een object, inclusief getallen) en een krachtig metaprogrammeersysteem.
Ruby draait op de YARV-interpreter (Yet Another Ruby VM) met JIT-compilatie sinds versie 3.1. De huidige versie Ruby 3.4 (2025) bevat decorators, de verbeterde Prism-parser en experimentele typeondersteuning via RBS. RubyGems — de pakketbeheerder — bevat meer dan 200.000 gems.
Ruby on Rails — het bekendste webframework in Ruby, maar in mobiele ontwikkeling wordt Ruby anders gebruikt. De belangrijkste niche — Fastlane: een ecosysteem van Ruby-scripts en gems voor het automatiseren van alle fasen van de levenscyclus van een mobiele app: van het ondertekenen van certificaten tot publicatie in de winkels.
Voor het werken met Fastlane is een basisbegrip van Ruby voldoende: methoden, do-end-blokken, symbolen (:symbol) en hash-syntaxis { key: value }. In tegenstelling tot Python gebruikt Ruby end voor het sluiten van blokken, niet inspringing. Methoden kunnen zonder haakjes worden aangeroepen — dit wordt actief gebruikt in de Fastlane DSL.
# Basis Ruby-syntaxis gebruikt in 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")In het voorbeeld accepteert de methode download_assets een argument version en een optionele benoemde parameter platform (standaard ios). Stringinterpolatie via #{} voegt waarden rechtstreeks in strings in. unless — tegenhanger van if, voert code uit als de voorwaarde onwaar is.
Fastlane — een open-source tool, geschreven in Ruby. Geïnstalleerd via gem install fastlane, biedt het een reeks opdrachten voor het automatiseren van de meest routinematige taken van een mobiele ontwikkelaar: het maken van screenshots, code-ondertekening, publicatie in TestFlight en Google Play Console.
Fastlane bestaat uit tools: sigh (certificaatbeheer), match (synchronisatie van certificaten in het team), gym (iOS-build), gradle (Android-build), deliver (iOS-publicatie), supply (Android-publicatie), snapshot (screenshots), scan (testen). Alle tools zijn toegankelijk vanuit één Fastfile.
In grote projecten verwerkt Fastlane tot 50+ acties in één pipeline: versieverhoging, downloaden van assets van CDN, build, ondertekening, upload naar App Store Connect, verzenden van een melding naar Slack. De hele pipeline wordt uitgevoerd met één commando: fastlane release.
Fastfile — een bestand in Ruby-achtige DSL dat een reeks acties (lanes) beschrijft. Elke lane is een afzonderlijke taak: beta (build voor testen), release (uitgave), screenshots (genereren van screenshots). Lanes kunnen andere lanes aanroepen met doorgegeven parameters.
# Fastfile — configuratie van de buildpipeline voor iOS-app
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Build en implementatie van TestFlight-build"
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]} is geüpload naar TestFlight"
)
end
endDe beta-lane voert achtereenvolgens uit: verhoging van het buildnummer (increment_build_number), synchronisatie van certificaten (match), compilatie van het archief (gym), upload naar TestFlight (upload_to_testflight) en verzenden van een melding naar Slack. De parameter :build wordt doorgegeven aan de lane als benoemd argument.
Fastlane ondersteunt beide platforms in één Fastfile. Voor Android wordt een lane binnen platform :android gebruikt met de acties gradle, supply en google_play_track_version_codes.
platform :android do
desc "APK-build en publicatie in 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 bevat meer dan 200 ingebouwde acties. Hieronder — de belangrijkste voor mobiele ontwikkeling, onderverdeeld in categorieën.
| Actie | Platform | Doel |
|---|---|---|
| match | iOS | Synchronisatie van certificaten en provisioning-profielen via Git |
| gym | iOS | Compilatie van .app- en .ipa-archief |
| scan | iOS | Uitvoeren van UI-tests op de simulator |
| snapshot | iOS | Automatisch genereren van screenshots op verschillende apparaten |
| deliver | iOS | Uploaden van build, screenshots en metadata naar App Store Connect |
| pilot | iOS | Beheer van TestFlight: uploaden van build, toevoegen van testers |
| gradle | Android | Uitvoeren van Gradle-taken: assemble, test, bundle |
| supply | Android | Uploaden van APK/AAB en metadata naar Google Play Console |
| screengrab | Android | Automatische screenshots voor Google Play |
| firebase_app_distribution | Beide | Uploaden van build naar Firebase App Distribution |
match — een Fastlane-gem voor synchronisatie van iOS-certificaten en provisioning-profielen tussen ontwikkelaars. Alle geheimen worden opgeslagen in een versleutelde Git-repository of S3. Match genereert automatisch certificaten als ze ontbreken en verlengt ze bij vervaldatum.
# Initiatie van match voor een nieuw project
$ fastlane match init
# Aanmaken en synchroniseren van App Store-certificaten
$ fastlane match appstore
# Aanmaken van Development-certificaten voor het team
$ fastlane match development
# Vernieuwen van alle certificaten bij verlopen
$ fastlane match --forceMatch slaat privésleutels op met een wachtwoordzin die alleen ontwikkelaars kennen. Elke ontwikkelaar kloont de certificaatrepository en voert match uit om de huidige profielen te installeren. Apple-certificaten zijn 1 jaar geldig, match verlengt ze automatisch.
Fastlane integreert met elk CI/CD-platform: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins en Xcode Cloud (via xcode-build). Fastlane wordt op CI gestart via fastlane <lane_naam> en retourneert een foutcode bij mislukking van een stap.
Configuratie voor GitHub Actions omvat installatie van Ruby, fastlane en het starten van de lane via bundle exec fastlane. Voor iOS-builds is een macOS-runner vereist. Voor Android kan ubuntu-latest worden gebruikt, wat goedkoper is.
# .github/workflows/deploy.yml — CI/CD met 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 }}De workflow wordt gestart bij push naar main. De macOS-runner voert bundle exec fastlane beta uit vanuit Fastfile. MATCH_PASSWORD wordt doorgegeven via GitHub Secrets voor het ontsleutelen van certificaten. Na voltooiing van de lane stuurt de Slack-actie een melding.
RubyGems — de pakketbeheerder voor Ruby. Fastlane wordt uitgebreid via plug-ins — gems die nieuwe acties toevoegen. De plug-in fastlane-plugin-versioning beheert versies, fastlane-plugin-firebase_app_distribution uploadt builds naar Firebase. Op GitHub zijn meer dan 500 Fastlane-plug-ins beschikbaar.
Gemfile in de projectroot legt versies van alle afhankelijkheden vast voor reproduceerbaarheid van builds. bundle install installeert gems volgens Gemfile.lock. Belangrijkste gems voor mobiele ontwikkeling: fastlane, cocoapods (iOS-afhankelijkheden), xcodeproj (werken met .xcodeproj).
# Gemfile voor een mobiel project
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 — niet de enige automatiseringstool. Laten we het vergelijken met de belangrijkste alternatieven op criteria die belangrijk zijn voor een mobiel team.
| Criterium | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flexibiliteit | Maximaal (code) | Gemiddeld (steps) | Laag (beperkt) | Hoog |
| iOS | Volledige ondersteuning | Volledig | Volledig (ingebouwd) | Via self-hosted macOS |
| Android | Volledige ondersteuning | Volledig | Nee | Volledig |
| Certificaten (match) | Ingebouwd | Via Code Signing | Automatisch | Via fastlane |
| Lokale uitvoering | Ja | Nee (alleen CI) | Nee | Via act |
| Plug-ins | 500+ | 200+ integraties | Nee | 20.000+ acties |
Fastlane blijft de meest flexibele tool voor complexe pipelines. Bitrise is handig voor teams zonder Ruby-ontwikkelaar. Xcode Cloud — voor eenvoudige iOS-projecten. GitHub Actions — als het team al GitHub gebruikt.
Veelgestelde vragen
Ruby wordt niet gebruikt voor het schrijven van mobiele apps, maar voor het automatiseren van build-, test- en implementatieprocessen via Fastlane. Fastlane is de facto standaard voor CI/CD in iOS- en Android-ontwikkeling.
Fastlane werkt op macOS, Linux en Windows, maar voor iOS-builds zijn Xcode en macOS vereist. Android-builds worden op elk platform uitgevoerd. Lokaal gebruiken ontwikkelaars macOS, op CI — macOS voor iOS en Linux voor Android.
Een basisbegrip van Ruby is voldoende om met Fastlane te werken. Fastlane gebruikt een Ruby-achtige DSL in Fastfile. Voor typische taken is kennis van gems, do-end-blokken en basissyntaxis voldoende. Diepgaande kennis van Ruby is niet vereist.
Alternatieven: Gradle voor Android (ingebouwd), Xcode Cloud (Apple), Bitrise (webinterface), GitHub Actions (YAML). Fastlane blijft de meest flexibele tool dankzij het rijke ecosysteem van acties en plug-ins.
Ja, Fastlane wordt gebruikt door grote bedrijven. Alle acties en configuratiebestanden worden in de repository versiebeheerd en match zorgt voor veilige opslag van certificaten in de repository of S3.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook