Ruby è un linguaggio dinamico interpretato con sintassi elegante, noto per il framework Ruby on Rails. Nello sviluppo mobile, Ruby viene utilizzato principalmente attraverso Fastlane — lo strumento standard per automatizzare build, test e distribuzione di applicazioni iOS e Android. Secondo la documentazione ufficiale di Fastlane, lo strumento è utilizzato in oltre 100.000 progetti in tutto il mondo.
Punti chiave
Ruby è un linguaggio dinamico interpretato open source creato da Yukihiro Matsumoto nel 1995. Il principio fondamentale di Ruby è la "semplicità ottimale" (principio del minimo stupore). Il linguaggio è noto per i blocchi (closure), l'approccio puramente orientato agli oggetti (tutto è un oggetto, inclusi i numeri) e un potente sistema di metaprogrammazione.
Ruby funziona sull'interprete YARV (Yet Another Ruby VM) con compilazione JIT dalla versione 3.1. La versione attuale Ruby 3.4 (2025) include decoratori, un parser Prism migliorato e supporto sperimentale ai tipi tramite RBS. RubyGems — il gestore di pacchetti — contiene oltre 200.000 gemme.
Ruby on Rails è il framework web più famoso costruito con Ruby, ma nello sviluppo mobile Ruby viene utilizzato diversamente. La sua nicchia principale è Fastlane: un ecosistema di script Ruby e gemme per automatizzare tutte le fasi del ciclo di vita di un'app mobile — dalla firma del codice alla pubblicazione negli store.
Lavorare con Fastlane richiede solo una conoscenza di base di Ruby: metodi, blocchi do-end, simboli (:symbol) e sintassi degli hash { key: value }. A differenza di Python, Ruby usa end per chiudere i blocchi invece dell'indentazione. I metodi possono essere chiamati senza parentesi — questo viene utilizzato attivamente nel DSL di Fastlane.
# Sintassi Ruby di base utilizzata 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")Nell'esempio, il metodo download_assets accetta un argomento version e un parametro nominato opzionale platform (default "ios"). L'interpolazione di stringhe con #{...} incorpora i valori direttamente nelle stringhe. unless è l'opposto di if — esegue il codice quando la condizione è falsa.
Fastlane è uno strumento open source scritto in Ruby. Installato tramite gem install fastlane, fornisce un insieme di comandi per automatizzare le attività più routinarie dello sviluppatore mobile: creare screenshot, firmare codice, pubblicare su TestFlight e Google Play Console.
Fastlane è composto da strumenti: sigh (gestione certificati), match (sincronizzazione certificati in team), gym (build iOS), gradle (build Android), deliver (pubblicazione iOS), supply (pubblicazione Android), snapshot (screenshot), scan (test). Tutti gli strumenti sono accessibili da un unico Fastfile.
Nei grandi progetti, Fastlane gestisce oltre 50 azioni in una singola pipeline: incremento versione, download asset da CDN, build, firma, upload su App Store Connect, invio notifiche Slack. L'intera pipeline viene eseguita con un solo comando: fastlane release.
Fastfile è un file DSL simile a Ruby che descrive una sequenza di azioni (lane). Ogni lane è un'attività separata: beta (build di test), release, screenshots. Le lane possono chiamare altre lane con parametri passati.
# Fastfile — configurazione della pipeline di build dell'app iOS
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Creazione e distribuzione del build TestFlight"
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]} caricato su TestFlight"
)
end
endLa lane beta esegue sequenzialmente: incrementare il numero di build (increment_build_number), sincronizzare i certificati (match), compilare l'archivio (gym), caricare su TestFlight (upload_to_testflight) e inviare notifica Slack. Il parametro :build viene passato alla lane come argomento nominato.
Fastlane supporta entrambe le piattaforme in un unico Fastfile. Per Android, utilizzare una lane all'interno di platform :android con le azioni gradle, supply e google_play_track_version_codes.
platform :android do
desc "Creazione dell'APK e pubblicazione su 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 include oltre 200 azioni integrate. Di seguito le più importanti per lo sviluppo mobile, organizzate per categoria.
| Azione | Piattaforma | Scopo |
|---|---|---|
| match | iOS | Sincronizzare certificati e profili di provisioning tramite Git |
| gym | iOS | Compilare archivi .app e .ipa |
| scan | iOS | Eseguire test UI sul simulatore |
| snapshot | iOS | Generazione automatica di screenshot su diversi dispositivi |
| deliver | iOS | Caricare build, screenshot e metadati su App Store Connect |
| pilot | iOS | Gestione TestFlight: caricare build, aggiungere tester |
| gradle | Android | Eseguire attività Gradle: assemble, test, bundle |
| supply | Android | Caricare APK/AAB e metadati su Google Play Console |
| screengrab | Android | Screenshot automatici per Google Play |
| firebase_app_distribution | Entrambe | Caricare build su Firebase App Distribution |
match è una gemma Fastlane per sincronizzare certificati iOS e profili di provisioning tra sviluppatori. Tutti i segreti sono memorizzati in un repository Git crittografato o S3. Match genera automaticamente i certificati se mancano e li rinnova alla scadenza.
# Inizializzazione di match per un nuovo progetto
$ fastlane match init
# Creazione e sincronizzazione dei certificati App Store
$ fastlane match appstore
# Creazione di certificati Development per il team
$ fastlane match development
# Rinnovo di tutti i certificati alla scadenza
$ fastlane match --forceMatch memorizza le chiavi private con una passphrase nota solo agli sviluppatori. Ogni sviluppatore clona il repository dei certificati ed esegue match per installare i profili correnti. I certificati Apple sono validi per 1 anno; match li rinnova automaticamente.
Fastlane si integra con qualsiasi piattaforma CI/CD: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins e Xcode Cloud (tramite xcode-build). Fastlane viene eseguito su CI usando fastlane <lane_name> e restituisce un codice di errore se un passo fallisce.
La configurazione per GitHub Actions include l'installazione di Ruby, fastlane e l'esecuzione della lane tramite bundle exec fastlane. Le build iOS richiedono un runner macOS. Le build Android possono usare ubuntu-latest, che è più economico.
# .github/workflows/deploy.yml — CI/CD con 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 }}Il workflow viene eseguito al push su main. Il runner macOS esegue bundle exec fastlane beta dal Fastfile. MATCH_PASSWORD viene passata tramite GitHub Secrets per la decrittazione dei certificati. Dopo il completamento della lane, un'azione Slack invia una notifica.
RubyGems è il gestore di pacchetti per Ruby. Fastlane viene esteso tramite plugin — gemme che aggiungono nuove azioni. Il plugin fastlane-plugin-versioning gestisce le versioni, fastlane-plugin-firebase_app_distribution carica build su Firebase. Ci sono oltre 500 plugin Fastlane su GitHub.
Il Gemfile nella radice del progetto fissa le versioni di tutte le dipendenze per build riproducibili. bundle install installa le gemme da Gemfile.lock. Le gemme essenziali per lo sviluppo mobile includono: fastlane, cocoapods (dipendenze iOS), xcodeproj (manipolazione .xcodeproj).
# Gemfile per un progetto mobile
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 non è l'unico strumento di automazione. Confrontiamolo con le principali alternative in base a criteri importanti per un team mobile.
| Criterio | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flessibilità | Massima (codice) | Media (passi) | Bassa (limitato) | Alta |
| iOS | Supporto completo | Completo | Completo (integrato) | Via macOS self-hosted |
| Android | Supporto completo | Completo | No | Completo |
| Certificati (match) | Integrato | Via Code Signing | Automatico | Via fastlane |
| Esecuzione locale | Sì | No (solo CI) | No | Via act |
| Plugin | 500+ | 200+ integrazioni | Nessuno | 20.000+ azioni |
Fastlane rimane lo strumento più flessibile per pipeline complesse. Bitrise è comodo per team senza uno sviluppatore Ruby. Xcode Cloud funziona per progetti iOS semplici. GitHub Actions è ideale se il team usa già GitHub.
Domande frequenti
Ruby non viene utilizzato per scrivere applicazioni mobili, ma per automatizzare i processi di build, test e distribuzione tramite Fastlane. Fastlane è lo standard de facto per CI/CD nello sviluppo iOS e Android.
Fastlane funziona su macOS, Linux e Windows, ma le build iOS richiedono Xcode e macOS. Le build Android possono essere eseguite su qualsiasi piattaforma. Gli sviluppatori usano macOS localmente e su CI — macOS per iOS e Linux per Android.
Una conoscenza di base di Ruby è sufficiente per lavorare con Fastlane. Fastlane utilizza un DSL simile a Ruby nel Fastfile. Per le attività tipiche, la conoscenza di gemme, blocchi do-end e sintassi di base è sufficiente. Non è richiesta una conoscenza approfondita di Ruby.
Alternative: Gradle per Android (integrato), Xcode Cloud (Apple), Bitrise (interfaccia web), GitHub Actions (YAML). Fastlane rimane lo strumento più flessibile grazie al suo ricco ecosistema di azioni e plugin.
Sì, Fastlane è utilizzato da grandi aziende. Tutte le azioni e i file di configurazione sono versionati nel repository e match garantisce l'archiviazione sicura dei certificati in un repository o S3.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche