Post on 15-May-2015
description
RUBYMOTION
RUBY FOR iOS
DEPLOYING YOUR DREAMS
Rui Miguel Santos
18 February 2014
RUBYMOTIONA RUBY TOOLCHAIN FOR DEVELOPING IOS APPLICATIONS
PAGE 2
ABOUT
- Laurent Sansonetti- Released by HipByte in
May 2012- MacRuby port for iOS- Fully compiled- 100% App Store
compliant
PAGE 3
WHY BOTHER?
PAGE 4
- Ruby- No code interpretation
(fully compiled)- IDE agnostic- Terminal-based workflow- REPL- Testing
IMPLEMENTATION
PAGE 5
iOS SDK
Foundation Framework
Objective-C Runtime
Objective-C
IMPLEMENTATION
PAGE 6
iOS SDK
Foundation Framework
Objective-C Runtime
Objective-C
RubyMotion
WORKFLOW
PAGE 7
- Terminal based- rake
- Keep your editor- RubyMine support
- Testing framework- Deploy
- Testflight support
WORKFLOW
PAGE 8
> motion create meetupDemo Create meetupDemo Create meetupDemo/.gitignore Create meetupDemo/app/app_delegate.rb Create meetupDemo/Gemfile Create meetupDemo/Rakefile Create meetupDemo/resources/Default-568h@2x.png Create meetupDemo/spec/main_spec.rb
Code away…
WORKFLOW
PAGE 9
> rake Build ./build/iPhoneSimulator-7.0-Development Compile ./app/app_delegate.rb Create ./build/iPhoneSimulator-7.0-Development/meetupDemo.app Link ./build/iPhoneSimulator-7.0-Development/meetupDemo.app/meetupDemo Create ./build/iPhoneSimulator-7.0-Development/meetupDemo.app/PkgInfo Create ./build/iPhoneSimulator-7.0-Development/meetupDemo.app/Info.plist Copy ./resources/Default-568h@2x.png Create ./build/iPhoneSimulator-7.0-Development/meetupDemo.dSYM Simulate ./build/iPhoneSimulator-7.0-Development/meetupDemo.app (main)>
> rake testflight notes=”Ready to distribute!"
Deploy!
LEARN BY TRANSLATING
PAGE 10
REPL
PAGE 11
- Tab completion (irb-like)- Interactive development
- ⌘ + click to change context (self)- Traverse view hierarchy- Modify objects in runtime
RUBYMOTION != MRI
PAGE 12
- No require- No eval- No Proc#binding- Named parameters- Regular gems need to
be modified
COMMUNITY
PAGE 13
- RubyMotion wrappers- DSLs
- BubbleWrap- Sugarcube- Teacup- ProMotion- …
- CocoaPods- Dedicated conference
- #inspect 2014
TESTING
PAGE 14
- MacBacon (RSpec)- Frank (Cucumber)- Facon (motion-facon)- Symbiote
DOWNSIDES
PAGE 15
- Not free (150€)- Lack of static checks in
compile time- Debugging- Hard to access low level
layers
RESOURCES
PAGE 16
- Official website- rubymotion.com
- RubyMotion Tutorial- rubymotion-tutorial.com
- Google Groups- groups.google.com/forum/#!forum/rubymotion
- GitHub repositories- github.com/HipByte
- RubyMotion Wrappers- rubymotion-wrappers.com
- Screencasts- motioninmotion.tv- motioncasts.tv- pragmaticstudio.com/screencasts/rubymotion
Imaginarycloud.cominfo@imaginarycloud.com
+351 218 053 896Rua Serpa Pinto, nº 14A, 3º andar
1200-445 Lisboa, Portugal