SlideShare uma empresa Scribd logo
1 de 44
MacRuby &
    Sexy Specs




1
Ricardo Valeriano (eu)
(Web? Mobile?) Developer
PHP ¬¬, Java, C#, JavaScript =), Ruby #FTW
github.com/ricardovaleriano
@ricardolho
Reflective

Object-Oriented

Dynamic

Smalltalk Inspiration...
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];




                          “Depois de Ruby tudo é feio,
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];




                          “Depois de Ruby tudo é feio,     máno
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];




                          “Depois de Ruby tudo é feio,     máno .“
NSMutableArray *array = [[NSMutableArray alloc] init];

 [array addObject:@"Objective-C"];




             array = []
             array << “ruby”
MacRuby

Ruby 1.9

v 0.6 - “Stable”

Mac OS X applications

Liderado pela Apple
http://www.macruby.org
http://www.macruby.org
http://www.macruby.org
=[
Recapitulando
Usei MacRuby para instalar gems
Usei o XCode para criar código Objective -C
Para iOS, bastaria usar os ‘retain’ e ‘releases’
Criei specs no editor que já uso com Ruby
Usei a automação de Build para rodar as Specs
Obrigado


Buuuuhhhhh

@ricardolho

Mais conteúdo relacionado

Semelhante a Sexy Specs on XCode with MacRuby and Rspec (Lightning Talk)

Quick introduction to Ruby on Rails
Quick introduction to Ruby on RailsQuick introduction to Ruby on Rails
Quick introduction to Ruby on RailsWhitesmith
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue Guerra
 
Macruby gurusp - lightning talk
Macruby gurusp - lightning talkMacruby gurusp - lightning talk
Macruby gurusp - lightning talkFernando Ribeiro
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma JavaJoão Lourenço
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
 
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRTecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRAlessandro Dias
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVMCaelum
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Daniel Lopes
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Introdução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCIntrodução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCLuís Gustavo Martins
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalargustavomtborges
 

Semelhante a Sexy Specs on XCode with MacRuby and Rspec (Lightning Talk) (20)

Quick introduction to Ruby on Rails
Quick introduction to Ruby on RailsQuick introduction to Ruby on Rails
Quick introduction to Ruby on Rails
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Macruby gurusp - lightning talk
Macruby gurusp - lightning talkMacruby gurusp - lightning talk
Macruby gurusp - lightning talk
 
RoR na prática
RoR na práticaRoR na prática
RoR na prática
 
RMI em Java
RMI em JavaRMI em Java
RMI em Java
 
Introducing Ruby
Introducing RubyIntroducing Ruby
Introducing Ruby
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma Java
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up Systems
 
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPRTecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
Tecnologias para desenvolvimento ágil de aplicações Web-Isemanatsi_UTFPR
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 
Plack
PlackPlack
Plack
 
Introdução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCIntrodução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjC
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalar
 
Treinamento i os
Treinamento i osTreinamento i os
Treinamento i os
 

Mais de Ricardo Valeriano

A linguagem maislegaldomundo
A linguagem maislegaldomundoA linguagem maislegaldomundo
A linguagem maislegaldomundoRicardo Valeriano
 
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.Ricardo Valeriano
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Ricardo Valeriano
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)Ricardo Valeriano
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOSRicardo Valeriano
 
JavaScript: prototipação, closure e encapsulamento
JavaScript: prototipação, closure e encapsulamentoJavaScript: prototipação, closure e encapsulamento
JavaScript: prototipação, closure e encapsulamentoRicardo Valeriano
 

Mais de Ricardo Valeriano (7)

Sua primeira app iOS
 Sua primeira app iOS Sua primeira app iOS
Sua primeira app iOS
 
A linguagem maislegaldomundo
A linguagem maislegaldomundoA linguagem maislegaldomundo
A linguagem maislegaldomundo
 
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
 
JavaScript: prototipação, closure e encapsulamento
JavaScript: prototipação, closure e encapsulamentoJavaScript: prototipação, closure e encapsulamento
JavaScript: prototipação, closure e encapsulamento
 

Sexy Specs on XCode with MacRuby and Rspec (Lightning Talk)

Notas do Editor

  1. Talk sobre MacRuby, Sexy Specs e, dando tempo, um gostinho de HotCocoa.
  2. Trabalho na Labone, recentemento desenvolvimento aplica&amp;#xE7;&amp;#xF5;es para iPad, iPhone e Android.
  3. Existem algumas semelhan&amp;#xE7;as entre as duas linguagens...
  4. Mas com certeza essas semelhan&amp;#xE7;as n&amp;#xE3;o est&amp;#xE3;o na sintaxe. Ruby tem esse &amp;#x201C;problema&amp;#x201D;, ap&amp;#xF3;s ele toda syntaxe parece estranha, e n&amp;#xE3;o se expressar direito.
  5. Mas com certeza essas semelhan&amp;#xE7;as n&amp;#xE3;o est&amp;#xE3;o na sintaxe. Ruby tem esse &amp;#x201C;problema&amp;#x201D;, ap&amp;#xF3;s ele toda syntaxe parece estranha, e n&amp;#xE3;o se expressar direito.
  6. Mas com certeza essas semelhan&amp;#xE7;as n&amp;#xE3;o est&amp;#xE3;o na sintaxe. Ruby tem esse &amp;#x201C;problema&amp;#x201D;, ap&amp;#xF3;s ele toda syntaxe parece estranha, e n&amp;#xE3;o se expressar direito.
  7. Mas com certeza essas semelhan&amp;#xE7;as n&amp;#xE3;o est&amp;#xE3;o na sintaxe. Ruby tem esse &amp;#x201C;problema&amp;#x201D;, ap&amp;#xF3;s ele toda syntaxe parece estranha, e n&amp;#xE3;o se expressar direito.
  8. Algum c&amp;#xF3;digo objective-c comparado com c&amp;#xF3;digo Ruby Breve vis&amp;#xE3;o sobre semelhan&amp;#xE7;as/diferen&amp;#xE7;as
  9. O MacRuby &amp;#xE9; uma implementa&amp;#xE7;&amp;#xE3;o da linguagem Ruby 1.9 sobre o Objective-C runtime. A vers&amp;#xE3;o 0.6 &amp;#xE9; considerada est&amp;#xE1;vel, a princ&amp;#xED;pio permite construir aplica&amp;#xE7;&amp;#xF5;es cocoa totalmente funcionais. O projeto &amp;#xE9; liderado pela pr&amp;#xF3;pria Apple.
  10. O objetivo principal do projeto &amp;#xE9; a constru&amp;#xE7;&amp;#xE3;o de aplica&amp;#xE7;&amp;#xF5;es para mac OS X
  11. No site do macruby, existe alguma documenta&amp;#xE7;&amp;#xE3;o e tamb&amp;#xE9;m o &amp;#x201C;instalador&amp;#x201D; que adiciona funcionalidade (templates de projeto) ao Xcode. Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel a insta&amp;#xE7;&amp;#xE3;o via rvm.
  12. No site do macruby, existe alguma documenta&amp;#xE7;&amp;#xE3;o e tamb&amp;#xE9;m o &amp;#x201C;instalador&amp;#x201D; que adiciona funcionalidade (templates de projeto) ao Xcode. Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel a insta&amp;#xE7;&amp;#xE3;o via rvm.
  13. No macirb, &amp;#xE9; poss&amp;#xED;vel ver que as classes do Ruby s&amp;#xE3;o na verdade classes Objective-C. Os m&amp;#xE9;todos de ruby s&amp;#xE3;o acess&amp;#xED;veis e tamb&amp;#xE9;m os de Objective-C.
  14. Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel invocar as classes/m&amp;#xE9;todos Objective-C a partir do Ruby.
  15. Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel invocar as classes/m&amp;#xE9;todos Objective-C a partir do Ruby.
  16. Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel invocar as classes/m&amp;#xE9;todos Objective-C a partir do Ruby.
  17. Cocoa &amp;#xE9; um &amp;#x201C;ambiente&amp;#x201D; de programa&amp;#xE7;&amp;#xE3;o baseado em Objective-C, um conjunto de apis, frameworks... para desenvolvimento Mac OS X. O MacRuby &amp;#xE9; &amp;#x201C;integrado&amp;#x201D; com Cocoa. E quanto ao iOS, o s.o. que roda no iPhone no iPad?
  18. Ainda n&amp;#xE3;o &amp;#xE9; poss&amp;#xED;vel construir aplica&amp;#xE7;&amp;#xF5;es para iOS usando MacRuby. Mas os rumores j&amp;#xE1; s&amp;#xE3;o muitos de que vem algo por a&amp;#xED;.
  19. Recentemente um engenheiro da apple comentou algo sobre, no twitter...
  20. RSpec. Existem solu&amp;#xE7;&amp;#xF5;es &amp;#x201C;nativas&amp;#x201D; no xcode para TDD, mas o RSpec &amp;#xE9; &amp;#x201C;outro n&amp;#xED;vel&amp;#x201D;. Vamos ver ent&amp;#xE3;o como fazer para criar as specs execut&amp;#xE1;veis &amp;#x201C;contra&amp;#x201D; nosso c&amp;#xF3;digo Objective-C.
  21. Instala&amp;#xE7;&amp;#xE3;o do RSpec via macirb. Por enquanto ainda n&amp;#xE3;o me aventurei com o RSpec2, shame on me.
  22. passos: criar novo projeto no xcode criar uma classe setar as propriedades do projeto (garbage collection supported) alterar o script de building do teste (aqui &amp;#xE9; um script ruby) O que vou fazer &amp;#xE9; usar a automa&amp;#xE7;&amp;#xE3;o do build que o xcode permite para executar minhas specs.
  23. passos: criar novo projeto no xcode criar uma classe setar as propriedades do projeto (garbage collection supported) alterar o script de building do teste (aqui &amp;#xE9; um script ruby) O que vou fazer &amp;#xE9; usar a automa&amp;#xE7;&amp;#xE3;o do build que o xcode permite para executar minhas specs.
  24. passos: criar novo projeto no xcode criar uma classe setar as propriedades do projeto (garbage collection supported) alterar o script de building do teste (aqui &amp;#xE9; um script ruby) O que vou fazer &amp;#xE9; usar a automa&amp;#xE7;&amp;#xE3;o do build que o xcode permite para executar minhas specs.
  25. passos: criar novo projeto no xcode criar uma classe setar as propriedades do projeto (garbage collection supported) alterar o script de building do teste (aqui &amp;#xE9; um script ruby) O que vou fazer &amp;#xE9; usar a automa&amp;#xE7;&amp;#xE3;o do build que o xcode permite para executar minhas specs.
  26. No diret&amp;#xF3;rio /specs/criei um arquivo my_twitter_spec.rb Vejam que para escrever minhas specs posso usar meu editor favorito.
  27. E ent&amp;#xE3;o no X Code, ao executar o build, ele falha.
  28. Crio uma classe MyTwitter
  29. E o teste passa.
  30. Agora crio um &amp;#x201C;should&amp;#x201D; para uma funcionalidade que minha classe ainda n&amp;#xE3;o tem. Notem que estou chamando uma classe que foi criada no xcode, em Objective-C (MyTwitter)
  31. E como o esperado o teste falha. Vejam que agora ele d&amp;#xE1; os detalhes (que nada mais &amp;#xE9; que a execu&amp;#xE7;&amp;#xE3;o padr&amp;#xE3;o do RSpec).
  32. Implemento meu m&amp;#xE9;todo.
  33. E meu build fica verdinho novamente.
  34. Testei meu &amp;#x201C;dom&amp;#xED;nio&amp;#x201D; criado em objective-c usando somente RSpec! #FTW
  35. Obrigado senhores, j&amp;#xE1; podem vaiar agora.