RubyMotion - Meetup Ruby lx

Preview:

DESCRIPTION

RubyMotion - An overview iOS development in Ruby

Citation preview

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

Recommended