Top Banner
RubyConf Taiwan RubyMotion HACK YOUR IOS APP LIKE NEVER BEFORE
37

RubyMotion Release Version

Oct 28, 2014

Download

Documents

Joseph Ku
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RubyMotion Release Version

RubyCo

nf Taiw

an

RubyMotionHACK YOUR IOS APP LIKE NEVER BEFORE

Page 2: RubyMotion Release Version

Who Am I?

Page 3: RubyMotion Release Version

古傑芳

Page 4: RubyMotion Release Version

@josephku

Page 5: RubyMotion Release Version
Page 6: RubyMotion Release Version

WHAT’S RUBYMOTION?

A Ruby toolchain for iOS

Develop and test native iOS app in Ruby

Based on MacRuby

Laurent Sansonetti (@lrz)

Page 7: RubyMotion Release Version

Why RubyMotion?

Page 8: RubyMotion Release Version
Page 9: RubyMotion Release Version

Objective-C

Objective-C Runtime

iOS SDK

Foundation Framework

Page 10: RubyMotion Release Version

Objective-C

Objective-C Runtime

iOS SDK

Foundation Framework

RubyMotion

Page 11: RubyMotion Release Version
Page 12: RubyMotion Release Version
Page 13: RubyMotion Release Version
Page 14: RubyMotion Release Version

WHY RUBYMOTION?

100% native code

Keep your editor

App Store compliant

Page 15: RubyMotion Release Version

Babe, Let’s Rock!!

Page 16: RubyMotion Release Version

Dirty

Page 17: RubyMotion Release Version

Dirty

Page 18: RubyMotion Release Version

The Last Mile

Page 19: RubyMotion Release Version

DEPLOYMENT

Deploy your app to beta testers by TestFlight

Deploy to App Store

$ rake archive:distribution

$ gem install motion-testflight

$ rake testflight notes='Orz'

Page 20: RubyMotion Release Version

// Foo.h@interface Foo: NSObject{}@property (nonatomic, strong) NSString *bar;@end

// Foo.m#import “Foo.h”@implementation Foo@synthesize bar = _bar;@end

class Foo attr_accessor :barend

Objective-C

RubyMotion

Page 21: RubyMotion Release Version

outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shoul

dColorMatch:

WTF!!

Page 22: RubyMotion Release Version

NSDictionary *rules = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber NumberWithBool:TRUE],"RubyIsAwesome",nil];

Objective-C

RubyMotionrules = { RubyIsAwesome: 1 }

What’s the magic??

Page 23: RubyMotion Release Version

Babe, Rock Again!!

Page 24: RubyMotion Release Version

LIMITATIONS

require

eval

define_method

Proc#binding

Regular gems don’t work

Page 25: RubyMotion Release Version

PROS & CONS

One-time fee of $199

Growing faster and faster

Apple’s attitude

Page 26: RubyMotion Release Version

Is RubyMotion the future?

Page 27: RubyMotion Release Version

DSL

Page 28: RubyMotion Release Version

App.alert("BubbleWrap is awesome!")App.run_after(0.5) { p "It's #{Time.now}" }App.open_url("http://rubyconf.tw/2012/")

Device.iphone?Device.ipad?Device.front_camera?

BW::Media.play_modal("http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3")

EM.add_timer 1.0 do puts "Great scott!"end

Page 29: RubyMotion Release Version
Page 30: RubyMotion Release Version
Page 31: RubyMotion Release Version

RubyMine

Page 32: RubyMotion Release Version
Page 33: RubyMotion Release Version
Page 34: RubyMotion Release Version

IS THE RUBYMOTION THE FUTURE?

DSL

Well-known editor and IDE Support

Active community

Page 35: RubyMotion Release Version

C’mon, it’s Ruby!!

Page 36: RubyMotion Release Version

Any questions?

Page 37: RubyMotion Release Version

Thank you!