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

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

Notas do Editor

  • #2 Talk sobre MacRuby, Sexy Specs e, dando tempo, um gostinho de HotCocoa.
  • #3 Trabalho na Labone, recentemento desenvolvimento aplica&amp;#xE7;&amp;#xF5;es para iPad, iPhone e Android.
  • #4 Existem algumas semelhan&amp;#xE7;as entre as duas linguagens...
  • #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 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.
  • #9 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
  • #10 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.
  • #11 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
  • #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 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.
  • #14 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.
  • #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 Tamb&amp;#xE9;m &amp;#xE9; poss&amp;#xED;vel invocar as classes/m&amp;#xE9;todos Objective-C a partir do Ruby.
  • #18 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?
  • #19 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;.
  • #20 Recentemente um engenheiro da apple comentou algo sobre, no twitter...
  • #21 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.
  • #22 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.
  • #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 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.
  • #27 No diret&amp;#xF3;rio /specs/criei um arquivo my_twitter_spec.rb Vejam que para escrever minhas specs posso usar meu editor favorito.
  • #28 E ent&amp;#xE3;o no X Code, ao executar o build, ele falha.
  • #29 Crio uma classe MyTwitter
  • #30 E o teste passa.
  • #31 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)
  • #32 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).
  • #33 Implemento meu m&amp;#xE9;todo.
  • #34 E meu build fica verdinho novamente.
  • #35 Testei meu &amp;#x201C;dom&amp;#xED;nio&amp;#x201D; criado em objective-c usando somente RSpec! #FTW
  • #37 Obrigado senhores, j&amp;#xE1; podem vaiar agora.