Ruby — ett dynamiskt tolkat språk med elegant syntax, känt för Ruby on Rails-ramverket. Inom mobilutveckling används Ruby främst genom Fastlane — standardverktyget för att automatisera byggen, testning och driftsättning av iOS- och Android-appar. Enligt Fastlanes officiella dokumentation används verktyget i över 100 000 projekt världen över.
Huvudpunkter
Ruby — ett dynamiskt tolkat språk med öppen källkod, skapat av Yukihiro Matsumoto 1995. Grundprincipen för Ruby — «optimal enkelhet» (principle of least surprise). Språket är känt för block (closures), ren objektorienterad ansats (allt är ett objekt, inklusive tal) och ett kraftfullt metaprogrammeringssystem.
Ruby körs på YARV (Yet Another Ruby VM)-tolk med JIT-kompilering från version 3.1. Aktuell version Ruby 3.4 (2025) innehåller dekoratörer, förbättrad Prism-parser och experimentellt typstöd via RBS. RubyGems — pakethanteraren — innehåller över 200 000 gems.
Ruby on Rails — det mest kända webbramverket i Ruby, men inom mobilutveckling används Ruby annorlunda. Huvudnischen — Fastlane: ett ekosystem av Ruby-skript och gems för att automatisera alla stadier av en mobilapps livscykel: från certifikatsignering till publicering i butiker.
För att arbeta med Fastlane räcker en grundläggande förståelse för Ruby: metoder, do-end-block, symboler (:symbol) och hash-syntax { key: value }. Till skillnad från Python använder Ruby end för att stänga block, inte indrag. Metoder kan anropas utan parentes — detta används aktivt i Fastlane DSL.
# Grundläggande Ruby-syntax som används i 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")I exemplet tar metoden download_assets emot argumentet version och en valfri namngiven parameter platform (standard ios). Stränginterpolering via #{} sätter in värden direkt i strängar. unless — motsatsen till if, utför kod om villkoret är falskt.
Fastlane — ett verktyg med öppen källkod, skrivet i Ruby. Installerat via gem install fastlane, erbjuder det en uppsättning kommandon för att automatisera de mest rutinmässiga uppgifterna för en mobilutvecklare: skapa skärmbilder, kodsignering, publicering i TestFlight och Google Play Console.
Fastlane består av verktyg (tools): sigh (certifikathantering), match (synkronisering av certifikat i teamet), gym (iOS-bygge), gradle (Android-bygge), deliver (iOS-publicering), supply (Android-publicering), snapshot (skärmbilder), scan (testning). Alla verktyg är tillgängliga från en enda Fastfile.
I stora projekt hanterar Fastlane upp till 50+ actions i en pipeline: versionsökning, nedladdning av tillgångar från CDN, bygge, signering, uppladdning till App Store Connect, skicka meddelande till Slack. Hela pipelinen körs med ett enda kommando: fastlane release.
Fastfile — en fil i Ruby-liknande DSL som beskriver en sekvens av handlingar (lane). Varje lane är en separat uppgift: beta (bygge för testning), release (utgåva), screenshots (generera skärmbilder). Lanes kan anropa andra lanes med överförda parametrar.
# Fastfile — konfiguration av byggpipeline för iOS-app
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Bygga och driftsätta 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]} har laddats upp till TestFlight"
)
end
endBetaslingan utför i tur och ordning: ökning av byggnummer (increment_build_number), synkronisering av certifikat (match), kompilering av arkiv (gym), uppladdning till TestFlight (upload_to_testflight) och skicka meddelande till Slack. Parametern :build överförs till lane som ett namngivet argument.
Fastlane stöder båda plattformarna i en Fastfile. För Android används en lane inuti platform :android med actions gradle, supply och google_play_track_version_codes.
platform :android do
desc "APK-bygge och publicering i 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 innehåller över 200 inbyggda actions. Nedan — de viktigaste för mobilutveckling, grupperade efter kategori.
| Action | Plattform | Syfte |
|---|---|---|
| match | iOS | Synkronisering av certifikat och provisioning-profiler via Git |
| gym | iOS | Kompilering av .app- och .ipa-arkiv |
| scan | iOS | Körning av UI-tester på simulatorn |
| snapshot | iOS | Automatisk generering av skärmbilder på olika enheter |
| deliver | iOS | Uppladdning av build, skärmbilder och metadata till App Store Connect |
| pilot | iOS | Hantering av TestFlight: uppladdning av build, lägga till testare |
| gradle | Android | Körning av Gradle-uppgifter: assemble, test, bundle |
| supply | Android | Uppladdning av APK/AAB och metadata till Google Play Console |
| screengrab | Android | Automatiska skärmbilder för Google Play |
| firebase_app_distribution | Båda | Uppladdning av build till Firebase App Distribution |
match — en Fastlane-gem för synkronisering av iOS-certifikat och provisioning-profiler mellan utvecklare. Alla hemligheter lagras i en krypterad Git-repository eller S3. Match genererar automatiskt certifikat om de saknas och förnyar dem vid utgång.
# Initiera match för nytt projekt
$ fastlane match init
# Skapa och synkronisera App Store-certifikat
$ fastlane match appstore
# Skapa Development-certifikat för teamet
$ fastlane match development
# Uppdatera alla certifikat vid utgång
$ fastlane match --forceMatch lagrar privata nycklar med en lösenfras som endast utvecklare känner till. Varje utvecklare klonar certifikatrepositoriet och kör match för att installera aktuella profiler. Apple-certifikat gäller i 1 år, match förnyar dem automatiskt.
Fastlane integreras med alla CI/CD-plattformar: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins och Xcode Cloud (via xcode-build). Fastlane körs på CI via fastlane <lane_namn> och returnerar en felkod om något steg misslyckas.
Konfiguration för GitHub Actions inkluderar installation av Ruby, fastlane och körning av lane via bundle exec fastlane. För iOS-bygge krävs en macOS-runner. För Android kan ubuntu-latest användas, vilket är billigare.
# .github/workflows/deploy.yml — CI/CD med 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 }}Arbetsflödet startar vid push till main. macOS-runner utför bundle exec fastlane beta från Fastfile. MATCH_PASSWORD överförs via GitHub Secrets för att dekryptera certifikat. När lane är klar skickar Slack-action en notifiering.
RubyGems — pakethanteraren för Ruby. Fastlane utökas via plugins — gems som lägger till nya actions. Plugin-programmet fastlane-plugin-versioning hanterar versioner, fastlane-plugin-firebase_app_distribution laddar upp builds till Firebase. På GitHub finns över 500 Fastlane-plugins.
Gemfile i projektroten låser versionerna av alla beroenden för reproducerbarhet av byggen. bundle install installerar gems enligt Gemfile.lock. De viktigaste gems för mobilutveckling: fastlane, cocoapods (iOS-beroenden), xcodeproj (arbeta med .xcodeproj).
# Gemfile för mobilprojekt
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 — inte det enda automatiseringsverktyget. Låt oss jämföra det med de viktigaste alternativen enligt kriterier som är viktiga för ett mobilt team.
| Kriterium | Fastlane (Ruby) | Bitrise (webb) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flexibilitet | Maximal (kod) | Medel (steps) | Låg (begränsad) | Hög |
| iOS | Fullt stöd | Fullt | Fullt (inbyggt) | Via self-hosted macOS |
| Android | Fullt stöd | Fullt | Nej | Fullt |
| Certifikat (match) | Inbyggt | Via Code Signing | Automatiskt | Via fastlane |
| Lokal körning | Ja | Nej (endast CI) | Nej | Via act |
| Plugins | 500+ | 200+ integrationer | Nej | 20 000+ actions |
Fastlane förblir det mest flexibla verktyget för komplexa pipelines. Bitrise är praktiskt för team utan Ruby-utvecklare. Xcode Cloud — för enkla iOS-projekt. GitHub Actions — om teamet redan använder GitHub.
Vanliga frågor
Ruby används inte för att skriva mobilappar, utan för att automatisera bygg-, test- och distributionsprocesser via Fastlane. Fastlane är de facto-standard för CI/CD inom iOS- och Android-utveckling.
Fastlane fungerar på macOS, Linux och Windows, men för iOS-bygge krävs Xcode och macOS. Android-byggen utförs på alla plattformar. Lokalt använder utvecklare macOS, på CI — macOS för iOS och Linux för Android.
En grundläggande förståelse för Ruby räcker för att arbeta med Fastlane. Fastlane använder ett Ruby-liknande DSL i Fastfile. För typiska uppgifter räcker kunskap om gems, do-end-block och grundläggande syntax. Djupgående kunskap om Ruby krävs inte.
Alternativ: Gradle för Android (inbyggt), Xcode Cloud (Apple), Bitrise (webbgränssnitt), GitHub Actions (YAML). Fastlane förblir det mest flexibla verktyget tack vare det rika ekosystemet av actions och plugins.
Ja, Fastlane används av stora företag. Alla actions och konfigurationsfiler versionshanteras i repositoriet, och match säkerställer säker lagring av certifikat i repositoriet eller S3.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också