Entwicklung für OS X und iOS mit Ruby
Boris Bügling (@NeoNacho)
Macoun 2012
Freitag, 26. Oktober 12
Wozu?• Rapid Prototyping
• Sharing von Backend Code
• Glücklicher ohne Xcode
• Lerneffekt
• Spaß
Freitag, 26. Oktober 12
Ruby• interpretiert, dynamisch typisiert
• alles ist ein Objekt
• blocks
• Meta-Programmierung
• gems
Freitag, 26. Oktober 12
Ruby
• 5.times { print "Hello world!" }
• exit unless "restaurant".include? "aura"
• ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
Freitag, 26. Oktober 12
Wie?
• MacRuby
• RubyMotion
Freitag, 26. Oktober 12
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
Technik• Keine Bridge
• Neuimplementierung mit CoreFoundation
• Nutzt die Objective-C Runtime und LLVM
• Hohe Performance
• Kompatibilität
Freitag, 26. Oktober 12
Freitag, 26. Oktober 12
Entwicklung
• Kein Xcode sondern Texteditor und Terminal
• Rake
• Interaktive Konsole (REPL)
• App Store kompatibel
Freitag, 26. Oktober 12
Features
• Unterstützung für spezielle Gems
• Testing
• Tooling: IB, Storyboards, Crash Reports, Instruments
Freitag, 26. Oktober 12
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
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
Demo: Shell
Freitag, 26. Oktober 12
BeispieliOS "Hello World" -> Twitter Client!
Freitag, 26. Oktober 12
• Rakefile - ersetzt .xcodeproj
• app - Code
• resources - Resourcen
• spec - Test Spec (BDD ist in RubyMotion integriert)
Freitag, 26. Oktober 12
Zugriff auf Twitter
• Ganz einfach dank Gems!
• :( - leider nicht, Gems müssen an RubyMotion angepasst werden
Freitag, 26. Oktober 12
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
Twitter ViewController
• IB, Storyboards
• Cocoa, ggf. mit Auto-Layout
• sugarcube
Freitag, 26. Oktober 12
Demo
Freitag, 26. Oktober 12
Testing• Bringt eigene Variante des BDD-Frameworks
Bacon mit
Freitag, 26. Oktober 12
Demo: Testen mit RubyMotion
Freitag, 26. Oktober 12
Beispiel 2OS X Twitter Client
Freitag, 26. Oktober 12
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
Demo
Freitag, 26. Oktober 12
Fragen?
Freitag, 26. Oktober 12
Literatur• Folien und Beispielcode: http://vu0.org/ruby
• MacRuby: http://macruby.org
• RubyMotion: http://rubymotion.com
• Screencasts: http://pragmaticstudio.com/screencasts/rubymotion und http://motioncasts.tv
Freitag, 26. Oktober 12
Top Related