Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rubymotion - Ruby <3 iOS
Search
Tiago Bastos
April 08, 2013
Programming
110
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubymotion - Ruby <3 iOS
Tiago Bastos
April 08, 2013
Transcript
34 slides
Rubymotion Ruby <3 iOS Monday, 8 April 13
Tiago Bastos • @bastos • github/bastos •
[email protected]
Monday, 8
April 13
Monday, 8 April 13
Why? • Ruby • Ruby • Ruby • Nativo •
Ferramentas Monday, 8 April 13
Why? • Ruby • Ruby • Ruby • Nativo •
Ferramentas (VIM) Monday, 8 April 13
Nativo? Monday, 8 April 13
NATIVO Monday, 8 April 13
LLVM Monday, 8 April 13
Monday, 8 April 13
Runtime Unificada Monday, 8 April 13
Mais • Gerenciamento de memória ARC Like • Concorrência (GCD)
• Rápido (já falei, nativo!) • App Store (TM) Safe Monday, 8 April 13
Ruby Monday, 8 April 13
Ruby • Módulos (Namespace) • Re exão e meta programação
• O Ruby que você conhece, Menos Eval • DSLs Monday, 8 April 13
DSLs e Wrappers • Teacup • SugarCube • Bubblewrap Monday,
8 April 13
Monday, 8 April 13
class MyController < UIViewController stylesheet :main_screen layout do
subview(UIButton, :finished_button) end end Monday, 8 April 13
Teacup::Stylesheet.new :main_screen do style :finished_button, origin:
[10, 10], title: 'Hi!' end Monday, 8 April 13
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"https://github.com"]]; Monday, 8 April 13
"https://github.com".nsurl.open Monday, 8 April 13
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you want to
say hello?" message:@"More info..." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Say Hello",nil]; [alert show]; -‐ (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { NSLog(@"Cancel Tapped."); } else if (buttonIndex == 1) { NSLog(@"OK Tapped. Hello World!"); } } Monday, 8 April 13
UIAlertView.alert "Is this cool?", buttons: %w[No! Sure! Hmmmm],
message: "No going back now", cancel: proc { self.cancel }, success: proc { |pressed| self.proceed if pressed == "Sure!" } Monday, 8 April 13
UIView.animation_chain { view.slide(:left, 20) }.and_then { view.slide(:up, 20)
}.and_then { view.slide(:right, 20) }.and_then { view.slide(:down, 20) }.and_then { view.fade_out }.start Monday, 8 April 13
BW::Location.get do |result| p "From Lat #{result[:from].latitude}, Lng
#{result[:from].longitude}" p "To Lat #{result[:to].latitude}, Lng #{result[:to].longitude}" end Monday, 8 April 13
Testes Monday, 8 April 13
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) button.setTitle('Take over the world', forState:UIControlStateNormal) window.addSubview(button)
tap 'Take over the world' Monday, 8 April 13
Mais! • Bootstrap Simples • Rubygems • Testes • Usar
bibliotecas em Objective-C (não é bridge!) Monday, 8 April 13
Ferramentas • Terminal based • Rake • Debugging (GDB based)
• Use seu Editor • CocoaPods Monday, 8 April 13
Monday, 8 April 13
Monday, 8 April 13
Monday, 8 April 13
app.version = '1.0.0' app.device_family = [:iphone] app.interface_orientations
= [:portrait] app.files += Dir.glob(File.join(app.project_dir, 'styles/**/*.rb')) app.development do app.codesign_certificate = "iPhone Developer: Tiago Bastos da Silva (HL4267W8QH)" app.provisioning_profile = File.expand_path("~/Library/MobileDevice/Provisioning Profiles/CE5529C9-‐0F02-‐40BA-‐ B2D9-‐8A342757DBB9.mobileprovision") end app.libs += %w(/usr/lib/libz.dylib /usr/lib/libsqlite3.dylib) app.pods do pod 'Facebook-‐iOS-‐SDK', '~> 3.2.1' pod 'MBProgressHUD' end app.frameworks += [ 'AudioToolbox', 'CFNetwork', 'CoreGraphics', 'CoreLocation', 'MobileCoreServices', 'QuartzCore', 'Security', 'StoreKit', 'SystemConfiguration', 'Accounts', 'AdSupport', 'Social' Monday, 8 April 13
Perguntas? Monday, 8 April 13
Perguntas? Não? Monday, 8 April 13
Perguntas? Não? Ok Monday, 8 April 13
More Decks by Tiago Bastos
See All by Tiago Bastos
Ruby & Elixir - Real time applications
bastos
4
310
Não está feito até estar testado
bastos
2
200
Other Decks in Programming
See All in Programming
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
660
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.7k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
300
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.6k
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
170
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
180
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
420
Distance field of Julia set
kinakomoti321
0
320
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
810
Designing for humans not robots
tammielis
254
26k
HDC tutorial
michielstock
2
1k
How to Ace a Technical Interview
jacobian
280
24k
Rails Girls Zürich Keynote
gr2m
96
14k
Building AI with AI
inesmontani
PRO
1
1.4k
Side Projects
sachag
456
43k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
The Language of Interfaces
destraynor
162
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k