SlideShare uma empresa Scribd logo
1 de 28
a bunch of reasons to love ruby
class Ben < Personis_a :mvp, :scrummaster, :aspinsider  def initialize		@book = “ASP.NET MVC in Action”	@twitter = “subdigital”	@blog= “http://flux88.com”	@iphone_app= “Pocket Tabs”  end  ...end
def self.expert?	falseend
Meet Ruby puts“hello world”hello world puts“hello world”.reversedlrowolleh puts“hello world”[0..5] hello
Ruby Variables num = 323 message = “Hey there” stuff = [1, “foo”, true]
Ruby Loops [“cat”, “dog”, “giraffe”].each do |s| 	puts s end [“cat”, “dog”, “giraffe”].each { |s| puts s }
Working with Arrays animals = [“zebra”, “donkey”, “lemur”] animals.sort[“donkey”, “lemur”, “zebra”] 			 # original array is untouched animals.sort! # original array is modified! animals.delete“zebra”  [“donkey”, “lemur”]
Ruby has Less Ceremony //C# Dictionary<string, object> hash = new 							Dictionary<string, object>(); #ruby hash = {} #optional semicolons & parentheses add(5, 6);     is the same as      add 5, 6
You Can Extend Existing classes 5.days.from_now
Ruby is Terse, yet Readable 3.times { print “Ho ” }  =>  Ho Ho Ho approve_credit unless account.deliquent? send_email if email_enabled?
Regex is a 1st class citizen [“red”, “blue”, “green”].grep /u/ blue “The Times They are a-Changin’”.gsub //, “.” The.Times.They.are.a-Changin’
Everything is an Object 42.class  FixNum 42.2.class.superclass  Integer 42.class.superclass.superclass   Numeric 42.class.superclass.superclass.superclass    Object No, really… everything is an object puts customer.name unless customer.nil? nil.classNilClass nil.class.superclass Object
RubyGems gem installhpricot
Speaking of hpricot… require ‘rubygems’ require ‘hpricot’ require ‘open-uri’ uri = open(“http://whatsit.org”) doc = Hpricot(uri) (doc/"p/a/img").each do |img|    puts img.attributes['class'] end
Rake task :codeGen do   # do the code generation end task :compile => :codeGen do   #do the compilation end task :dataLoad => :codeGen do   # load the test data end task :test => [:compile, :dataLoad] do   # run the tests end
RSpec # bowling_spec.rb require 'bowling' describe Bowling do   it "should score 0 for gutter game" do     bowling = Bowling.new     20.times { bowling.hit 0 } bowling.score.should == 0   end end
…and now the elephant in the room rails
Rails is the bee’s knees because… convention  configuration
Rails is the bee’s knees because… it has ActiveRecord
Rails is the bee’s knees because… it has Migrations
Rails is the bee’s knees because… it has the Console
Rails is the bee’s knees because… scaffolding
Rails is the bee’s knees because… Logging is built-in
Rails is the bee’s knees because… Tests come out of the box
Rails is the bee’s knees because… There is ONE WAY
What else? heroku
What else? IronRuby
thank_you

Mais conteúdo relacionado

Mais procurados

Javascript orientado a testes
Javascript orientado a testesJavascript orientado a testes
Javascript orientado a testes
Alexandre Gomes
 
Copycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRBCopycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRB
bostonrb
 

Mais procurados (19)

Deploying a Location-Aware Ember Application
Deploying a Location-Aware Ember ApplicationDeploying a Location-Aware Ember Application
Deploying a Location-Aware Ember Application
 
RSpec 2 Best practices
RSpec 2 Best practicesRSpec 2 Best practices
RSpec 2 Best practices
 
Coffeescript: An Opinionated Introduction
Coffeescript: An Opinionated IntroductionCoffeescript: An Opinionated Introduction
Coffeescript: An Opinionated Introduction
 
Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hope
 
An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015
 
Sinatra + Heroku
Sinatra + HerokuSinatra + Heroku
Sinatra + Heroku
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2
 
Ansible -new kid in configuration management world
Ansible -new kid in configuration management worldAnsible -new kid in configuration management world
Ansible -new kid in configuration management world
 
Gem That (2009)
Gem That (2009)Gem That (2009)
Gem That (2009)
 
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right ReasonsPerl: Hate it for the Right Reasons
Perl: Hate it for the Right Reasons
 
Hooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp ColumbusHooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp Columbus
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
GAEO
GAEOGAEO
GAEO
 
Mojolicious on Steroids
Mojolicious on SteroidsMojolicious on Steroids
Mojolicious on Steroids
 
Javascript orientado a testes
Javascript orientado a testesJavascript orientado a testes
Javascript orientado a testes
 
Cooking Up Drama
Cooking Up DramaCooking Up Drama
Cooking Up Drama
 
Cooking Up Drama - ChefConf 2015
Cooking Up Drama - ChefConf 2015 Cooking Up Drama - ChefConf 2015
Cooking Up Drama - ChefConf 2015
 
Copycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRBCopycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRB
 

Destaque

guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
Shinya Hayakawa
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältar
Per Åström
 
家長講座﹕如何利用圖書館資源協助學習
家長講座﹕如何利用圖書館資源協助學習家長講座﹕如何利用圖書館資源協助學習
家長講座﹕如何利用圖書館資源協助學習
fongyun
 
Multimedia project with audio
Multimedia project with audioMultimedia project with audio
Multimedia project with audio
carrieschlosser
 
C:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internetC:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internet
rfuentesb
 
C:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internetC:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internet
fmirandac
 
mapa conceptual sobre el proceso de investigacion
mapa conceptual sobre el proceso de investigacion mapa conceptual sobre el proceso de investigacion
mapa conceptual sobre el proceso de investigacion
Jibran Tannous
 

Destaque (20)

Presentation3
Presentation3Presentation3
Presentation3
 
JSE Top 40 and social media: 14 march 2011
JSE Top 40 and social media: 14 march 2011JSE Top 40 and social media: 14 march 2011
JSE Top 40 and social media: 14 march 2011
 
Bizcom Work - Charte Fast Complete Light
Bizcom Work - Charte Fast Complete LightBizcom Work - Charte Fast Complete Light
Bizcom Work - Charte Fast Complete Light
 
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältar
 
家長講座﹕如何利用圖書館資源協助學習
家長講座﹕如何利用圖書館資源協助學習家長講座﹕如何利用圖書館資源協助學習
家長講座﹕如何利用圖書館資源協助學習
 
Aizu.LT05
Aizu.LT05Aizu.LT05
Aizu.LT05
 
Guia apa6taed
Guia apa6taedGuia apa6taed
Guia apa6taed
 
Tutorial de computacion basica II
Tutorial de computacion basica IITutorial de computacion basica II
Tutorial de computacion basica II
 
Maximizing Social Security with Retirement
Maximizing Social Security with RetirementMaximizing Social Security with Retirement
Maximizing Social Security with Retirement
 
Multimedia project with audio
Multimedia project with audioMultimedia project with audio
Multimedia project with audio
 
Dispositivos de Expansion
Dispositivos de ExpansionDispositivos de Expansion
Dispositivos de Expansion
 
C:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internetC:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internet
 
C:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internetC:\fakepath\protocolos y recursos de internet
C:\fakepath\protocolos y recursos de internet
 
Mobb recht090918
Mobb recht090918Mobb recht090918
Mobb recht090918
 
Palacios Alejandro Wiki
Palacios Alejandro WikiPalacios Alejandro Wiki
Palacios Alejandro Wiki
 
Hora do Sul
Hora do SulHora do Sul
Hora do Sul
 
mapa conceptual sobre el proceso de investigacion
mapa conceptual sobre el proceso de investigacion mapa conceptual sobre el proceso de investigacion
mapa conceptual sobre el proceso de investigacion
 
T1P2-D1 DIEGO ANDRES NARVAEZ NARVAEZ
T1P2-D1 DIEGO ANDRES NARVAEZ NARVAEZT1P2-D1 DIEGO ANDRES NARVAEZ NARVAEZ
T1P2-D1 DIEGO ANDRES NARVAEZ NARVAEZ
 
Black ch01
Black ch01Black ch01
Black ch01
 

Semelhante a Reasons To Love Ruby

Ruby 入門 第一次就上手
Ruby 入門 第一次就上手Ruby 入門 第一次就上手
Ruby 入門 第一次就上手
Wen-Tien Chang
 
CoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-TuesdayCoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-Tuesday
Eddie Kao
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
旻琦 潘
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Paulo Ragonha
 

Semelhante a Reasons To Love Ruby (20)

A linguagem de programação Ruby - Robson "Duda" Sejan Soares Dornelles
A linguagem de programação Ruby - Robson "Duda" Sejan Soares DornellesA linguagem de programação Ruby - Robson "Duda" Sejan Soares Dornelles
A linguagem de programação Ruby - Robson "Duda" Sejan Soares Dornelles
 
Ruby Programming Language
Ruby Programming LanguageRuby Programming Language
Ruby Programming Language
 
Ruby 入門 第一次就上手
Ruby 入門 第一次就上手Ruby 入門 第一次就上手
Ruby 入門 第一次就上手
 
CoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-TuesdayCoffeeScript-Ruby-Tuesday
CoffeeScript-Ruby-Tuesday
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)
 
"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues
 
Ruby
RubyRuby
Ruby
 
Crossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end FrameworkCrossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end Framework
 
jRuby: The best of both worlds
jRuby: The best of both worldsjRuby: The best of both worlds
jRuby: The best of both worlds
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2ruby
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
An introduction to Ruby
An introduction to RubyAn introduction to Ruby
An introduction to Ruby
 
Extracting ruby gem
Extracting ruby gemExtracting ruby gem
Extracting ruby gem
 
Blocks by Lachs Cox
Blocks by Lachs CoxBlocks by Lachs Cox
Blocks by Lachs Cox
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes Back
 
RubyMotion
RubyMotionRubyMotion
RubyMotion
 
Rails 2010 Workshop
Rails 2010 WorkshopRails 2010 Workshop
Rails 2010 Workshop
 
Ruby gems
Ruby gemsRuby gems
Ruby gems
 

Mais de Ben Scheirman (6)

Meet Git
Meet GitMeet Git
Meet Git
 
Effective iOS Network Programming Techniques
Effective iOS Network Programming TechniquesEffective iOS Network Programming Techniques
Effective iOS Network Programming Techniques
 
Objective-C & iPhone for .NET Developers
Objective-C & iPhone for .NET DevelopersObjective-C & iPhone for .NET Developers
Objective-C & iPhone for .NET Developers
 
iPhone for .NET Developers
iPhone for .NET DevelopersiPhone for .NET Developers
iPhone for .NET Developers
 
SQLite Techniques
SQLite TechniquesSQLite Techniques
SQLite Techniques
 
A Scalable Rails App Deployed in 60 Seconds
A Scalable Rails App Deployed in 60 SecondsA Scalable Rails App Deployed in 60 Seconds
A Scalable Rails App Deployed in 60 Seconds
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

Reasons To Love Ruby

  • 1. a bunch of reasons to love ruby
  • 2. class Ben < Personis_a :mvp, :scrummaster, :aspinsider def initialize @book = “ASP.NET MVC in Action” @twitter = “subdigital” @blog= “http://flux88.com” @iphone_app= “Pocket Tabs” end ...end
  • 4. Meet Ruby puts“hello world”hello world puts“hello world”.reversedlrowolleh puts“hello world”[0..5] hello
  • 5. Ruby Variables num = 323 message = “Hey there” stuff = [1, “foo”, true]
  • 6. Ruby Loops [“cat”, “dog”, “giraffe”].each do |s| puts s end [“cat”, “dog”, “giraffe”].each { |s| puts s }
  • 7. Working with Arrays animals = [“zebra”, “donkey”, “lemur”] animals.sort[“donkey”, “lemur”, “zebra”] # original array is untouched animals.sort! # original array is modified! animals.delete“zebra” [“donkey”, “lemur”]
  • 8. Ruby has Less Ceremony //C# Dictionary<string, object> hash = new Dictionary<string, object>(); #ruby hash = {} #optional semicolons & parentheses add(5, 6); is the same as add 5, 6
  • 9. You Can Extend Existing classes 5.days.from_now
  • 10. Ruby is Terse, yet Readable 3.times { print “Ho ” } => Ho Ho Ho approve_credit unless account.deliquent? send_email if email_enabled?
  • 11. Regex is a 1st class citizen [“red”, “blue”, “green”].grep /u/ blue “The Times They are a-Changin’”.gsub //, “.” The.Times.They.are.a-Changin’
  • 12. Everything is an Object 42.class FixNum 42.2.class.superclass  Integer 42.class.superclass.superclass  Numeric 42.class.superclass.superclass.superclass  Object No, really… everything is an object puts customer.name unless customer.nil? nil.classNilClass nil.class.superclass Object
  • 14. Speaking of hpricot… require ‘rubygems’ require ‘hpricot’ require ‘open-uri’ uri = open(“http://whatsit.org”) doc = Hpricot(uri) (doc/"p/a/img").each do |img| puts img.attributes['class'] end
  • 15. Rake task :codeGen do # do the code generation end task :compile => :codeGen do #do the compilation end task :dataLoad => :codeGen do # load the test data end task :test => [:compile, :dataLoad] do # run the tests end
  • 16. RSpec # bowling_spec.rb require 'bowling' describe Bowling do it "should score 0 for gutter game" do bowling = Bowling.new 20.times { bowling.hit 0 } bowling.score.should == 0 end end
  • 17. …and now the elephant in the room rails
  • 18. Rails is the bee’s knees because… convention configuration
  • 19. Rails is the bee’s knees because… it has ActiveRecord
  • 20. Rails is the bee’s knees because… it has Migrations
  • 21. Rails is the bee’s knees because… it has the Console
  • 22. Rails is the bee’s knees because… scaffolding
  • 23. Rails is the bee’s knees because… Logging is built-in
  • 24. Rails is the bee’s knees because… Tests come out of the box
  • 25. Rails is the bee’s knees because… There is ONE WAY