Ruby هي لغة ديناميكية مفسرة ذات بناء جملة أنيق، تشتهر بإطار العمل Ruby on Rails. في تطوير التطبيقات المحمولة، تُستخدم Ruby بشكل أساسي من خلال Fastlane — الأداة القياسية لأتمتة عمليات البناء والاختبار والنشر لتطبيقات iOS وAndroid. وفقاً للوثائق الرسمية لـ Fastlane، تُستخدم الأداة في أكثر من 100,000 مشروع حول العالم.
النقاط الرئيسية
Ruby هي لغة ديناميكية مفسرة مفتوحة المصدر أنشأها يوكيهيرو ماتسوموتو في عام 1995. المبدأ الأساسي لـ Ruby هو "البساطة المثلى" (مبدأ أقل مفاجأة). تشتهر اللغة بالكتل (الإغلاقات)، والنهج النقي للبرمجة كائنية التوجه (كل شيء هو كائن، بما في ذلك الأرقام)، ونظام قوي للبرمجة الوصفية.
تعمل Ruby على مفسر YARV (Yet Another Ruby VM) مع ترجمة JIT منذ الإصدار 3.1. الإصدار الحالي Ruby 3.4 (2025) يتضمن المُزَيِّنات (decorators)، ومحللاً محسّناً Prism، ودعماً تجريبياً للأنواع من خلال RBS. RubyGems — مدير الحزم — يحتوي على أكثر من 200,000 حزمة.
Ruby on Rails هو إطار الويب الأكثر شهرة المبني بلغة Ruby، لكن في تطوير التطبيقات المحمولة تُستخدم Ruby بشكل مختلف. مجالاتها الرئيسي هو Fastlane: نظام بيئي من نصوص Ruby والحزم لأتمتة جميع مراحل دورة حياة التطبيق المحمول — من توقيع الكود إلى النشر في المتاجر.
العمل مع Fastlane يتطلب فقط فهماً أساسياً لـ Ruby: الدوال، كتل do-end، الرموز (:symbol)، وبناء جملة التجزئة { key: value }. على عكس Python، تستخدم Ruby كلمة end لإغلاق الكتل بدلاً من المسافات البادئة. يمكن استدعاء الدوال بدون أقواس — وهذا يُستخدم بنشاط في DSL الخاص بـ Fastlane.
# بناء جملة Ruby الأساسي المستخدم في 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")في المثال، الدالة download_assets تأخذ وسيطاً version ومعاملاً مسمى اختيارياً platform (القيمة الافتراضية "ios"). إقحام السلاسل بـ #{...} يدمج القيم مباشرة في السلاسل. unless هي عكس if — تنفذ الكود عندما يكون الشرط خاطئاً.
Fastlane هي أداة مفتوحة المصدر مكتوبة بلغة Ruby. يتم تثبيتها عبر gem install fastlane، وتوفر مجموعة من الأوامر لأتمتة أكثر المهام الروتينية لمطوري التطبيقات المحمولة: إنشاء لقطات الشاشة، توقيع الكود، النشر في TestFlight وGoogle Play Console.
تتكون Fastlane من أدوات: sigh(إدارة الشهادات)، match(مزامنة الشهادات في الفرق)، gym(بناء iOS)، gradle (بناء Android)، deliver (نشر iOS)، supply (نشر Android)، snapshot (لقطات الشاشة)، scan (الاختبار). جميع الأدوات متاحة من Fastfile واحد.
في المشاريع الكبيرة، يعالج Fastlane أكثر من 50 إجراءً في خط أنابيب واحد: زيادة الإصدار، تنزيل الأصول من CDN، البناء، التوقيع، الرفع إلى App Store Connect، إرسال إشعارات Slack. يعمل خط الأنابيب بأكمله بأمر واحد: fastlane release.
Fastfile هو ملف DSL شبيه بـ Ruby يصف تسلسلاً من الإجراءات (الممرات). كل ممر هو مهمة منفصلة: beta (بناء اختباري)، release، screenshots. يمكن للممرات استدعاء ممرات أخرى بمعاملات مُمررة.
# Fastfile — تكوين خط أنابيب بناء تطبيق iOS
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "بناء ونشر 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]} تم رفعه إلى TestFlight"
)
end
endالممر beta ينفذ بالتسلسل: زيادة رقم البناء (increment_build_number)، مزامنة الشهادات (match)، بناء الأرشيف (gym)، الرفع إلى TestFlight (upload_to_testflight)، وإرسال إشعار Slack. المعامل :build يُمرر للممر كوسيطة مسمى.
يدعم Fastlane كلا المنصتين في Fastfile واحد. لـ Android، استخدم ممراً داخل platform :android مع إجراءات gradle وsupply وgoogle_play_track_version_codes.
platform :android do
desc "بناء APK ونشره في 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 تتضمن أكثر من 200 إجراء مدمج. فيما يلي الأكثر أهمية لتطوير التطبيقات المحمولة، مصنفة حسب الفئة.
| الإجراء | المنصة | الغرض |
|---|---|---|
| match | iOS | مزامنة الشهادات وملفات التزويد عبر Git |
| gym | iOS | بناء أرشيفات .app و.ipa |
| scan | iOS | تشغيل اختبارات واجهة المستخدم على المحاكي |
| snapshot | iOS | إنشاء تلقائي للقطات الشاشة على أجهزة مختلفة |
| deliver | iOS | رفع البناء ولقطات الشاشة والبيانات الوصفية إلى App Store Connect |
| pilot | iOS | إدارة TestFlight: رفع البنيات، إضافة المختبرين |
| gradle | Android | تشغيل مهام Gradle: assemble, test, bundle |
| supply | Android | رفع APK/AAB والبيانات الوصفية إلى Google Play Console |
| screengrab | Android | لقطات شاشة تلقائية لـ Google Play |
| firebase_app_distribution | كلتاهما | رفع البناء إلى Firebase App Distribution |
match هي حزمة Fastlane لمزامنة شهادات iOS وملفات التزويد بين المطورين. جميع الأسرار مخزنة في مستودع Git مشفر أو S3. يقوم match تلقائياً بإنشاء الشهادات إذا كانت مفقودة وتجديدها عند انتهاء صلاحيتها.
# تهيئة match لمشروع جديد
$ fastlane match init
# إنشاء ومزامنة شهادات App Store
$ fastlane match appstore
# إنشاء شهادات Development للفريق
$ fastlane match development
# تحديث جميع الشهادات عند انتهاء الصلاحية
$ fastlane match --forceيخزن match المفاتيح الخاصة بعبارة مرور لا يعرفها إلا المطورون. كل مطور يستنسخ مستودع الشهادات ويشغل match لتثبيت الملفات الشخصية الحالية. شهادات Apple صالحة لمدة عام واحد؛ يقوم match بتجديدها تلقائياً.
Fastlane تتكامل مع أي منصة CI/CD: GitHub Actions، GitLab CI، CircleCI، Bitrise، Jenkins وXcode Cloud (عبر xcode-build). تعمل Fastlane على CI من خلال fastlane <lane_name> وتُرجع رمز خطأ إذا فشلت أي خطوة.
إعداد GitHub Actions يتضمن تثبيت Ruby وfastlane وتشغيل الممر عبر bundle exec fastlane. تتطلب بنيات iOS بيئة تشغيل macOS. يمكن لبنيات Android استخدام ubuntu-latest، وهو أقل تكلفة.
# .github/workflows/deploy.yml — CI/CD مع 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 }}يتم تشغيل سير العمل عند الدفع إلى main. ينفذ بيئة macOS الأمر bundle exec fastlane beta من Fastfile. يتم تمرير MATCH_PASSWORD عبر GitHub Secrets لفك تشفير الشهادات. بعد اكتمال الممر، يرسل إجراء Slack إشعاراً.
RubyGems هو مدير حزم Ruby. يتم توسيع Fastlane من خلال الإضافات — حزم تضيف إجراءات جديدة. الإضافة fastlane-plugin-versioning تدير الإصدارات، fastlane-plugin-firebase_app_distribution ترفع البنيات إلى Firebase. هناك أكثر من 500 إضافة Fastlane على GitHub.
يحدد Gemfile في جذر المشروع إصدارات جميع التبعيات لضمان تكرارية البنيات. bundle install يثبت الحزم من Gemfile.lock. الحزم الأساسية لتطوير التطبيقات المحمولة تشمل: fastlane، cocoapods (تبعيات iOS)، xcodeproj (التعامل مع .xcodeproj).
# 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 ليست أداة الأتمتة الوحيدة. دعنا نقارنها بالبدائل الرئيسية وفقاً لمعايير مهمة لفريق التطوير المحمول.
| المعيار | Fastlane (Ruby) | Bitrise (ويب) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| المرونة | قصوى (كود) | متوسطة (خطوات) | منخفضة (محدود) | عالية |
| iOS | دعم كامل | كامل | كامل (مدمج) | عبر macOS مستضاف ذاتياً |
| Android | دعم كامل | كامل | لا | كامل |
| الشهادات (match) | مدمج | عبر Code Signing | تلقائي | عبر fastlane |
| التنفيذ المحلي | نعم | لا (CI فقط) | لا | عبر act |
| الإضافات | 500+ | 200+ تكامل | لا شيء | 20,000+ إجراء |
تظل Fastlane الأداة الأكثر مرونة لخطوط الأنابيب المعقدة. Bitrise مناسب للفرق التي ليس لديها مطور Ruby. Xcode Cloud يعمل للمشاريع iOS البسيطة. GitHub Actions مثالي إذا كان الفريق يستخدم GitHub بالفعل.
الأسئلة الشائعة
Ruby لا تُستخدم لكتابة تطبيقات المحمولة، بل لأتمتة عمليات البناء والاختبار والنشر عبر Fastlane. Fastlane هو المعيار الفعلي لـ CI/CD في تطوير iOS وAndroid.
Fastlane يعمل على macOS وLinux وWindows، لكن بنيات iOS تتطلب Xcode وmacOS. يمكن تشغيل بنيات Android على أي منصة. يستخدم المطورون macOS محلياً، وفي CI — macOS لـ iOS وLinux لـ Android.
فهم أساسي لـ Ruby كافٍ للعمل مع Fastlane. يستخدم Fastlane لغة DSL شبيهة بـ Ruby في Fastfile. للمهام النموذجية، يكفي معرفة الحزم وكتل do-end والبناء الأساسي. لا يتطلب معرفة عميقة بـ Ruby.
البدائل: Gradle لـ Android (مدمج)، Xcode Cloud (Apple)، Bitrise (واجهة ويب)، GitHub Actions (YAML). تظل Fastlane الأداة الأكثر مرونة بفضل نظامها الغني من الإجراءات والإضافات.
نعم، Fastlane تُستخدم من قبل الشركات الكبيرة. جميع الإجراءات وملفات التكوين مُدارة بالإصدارات في المستودع، ويضمن match التخزين الآمن للشهادات في مستودع أو S3.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.