5. Wie?
• MacRuby
• RubyMotion
Freitag, 26. Oktober 12
6. Historie
• 2001: RubyCocoa
• 2006: WWDC Session zu RubyCocoa
• MacRuby: seit 2007 in Entwicklung
• Entwickler Laurent Sansonetti (lrz) arbeitet
Vollzeit bei Apple daran
• 2012: RubyMotion ohne Apple Unterstützung
Freitag, 26. Oktober 12
7. Technik
• Keine Bridge
• Neuimplementierung mit CoreFoundation
• Nutzt die Objective-C Runtime und LLVM
• Hohe Performance
• Kompatibilität
Freitag, 26. Oktober 12
9. Entwicklung
• Kein Xcode sondern Texteditor und Terminal
• Rake
• Interaktive Konsole (REPL)
• App Store kompatibel
Freitag, 26. Oktober 12
10. Features
• Unterstützung für spezielle Gems
• Testing
• Tooling: IB, Storyboards, Crash Reports,
Instruments
Freitag, 26. Oktober 12
11. Rake
• Ruby de-facto Build System
• Rakefile ist in Ruby geschrieben
• Deployment über Kommandozeile:
rake simulator device_family=ipad
• Ausführung von Tests:
rake spec
Freitag, 26. Oktober 12
12. Interaktive Shell
• Zur Laufzeit beliebigen Code ausführen
• -> Besseres Debugging
• -> Kleinere Edits on-the-fly
• Bisher nur im Simulator möglich
Freitag, 26. Oktober 12
14. Beispiel
iOS "Hello World" -> Twitter Client!
Freitag, 26. Oktober 12
15. • Rakefile - ersetzt .xcodeproj
• app - Code
• resources - Resourcen
• spec - Test Spec (BDD ist in
RubyMotion integriert)
Freitag, 26. Oktober 12
16. Zugriff auf Twitter
• Ganz einfach dank Gems!
• :( - leider nicht, Gems müssen an RubyMotion
angepasst werden
Freitag, 26. Oktober 12
17. Cocoa APIs
• Werden 1:1 übernommen
• Laut lrz sollen DSLs aus der Community
kommen
• Ruby Standardbibliotheken fehlen, daher gibt
es z.B. bubble-wrap oder sugarcube
• CocoaPods sind einfach integrierbar
Freitag, 26. Oktober 12
18. Twitter ViewController
• IB, Storyboards
• Cocoa, ggf. mit Auto-Layout
• sugarcube
Freitag, 26. Oktober 12
22. Beispiel 2
OS X Twitter Client
Freitag, 26. Oktober 12
23. Unterschiede
• Workflow hängt an Xcode
• Besserer Support für Gems
• Natürlich AppKit statt UIKit
• Keine direkte Integration von Tests
• Keine interaktive Shell
Freitag, 26. Oktober 12