SlideShare a Scribd company logo
Ruby
 programming language
         and
Ruby on Rails framework
Presentation Agenda
 What is Ruby?

 About the language

 Its history

 Principles of language

 Code examples

 Rails framework

January 18, 2010        Radek Mika - Unicorn College   2
What is Ruby?
 Programming language

 Interpreted language

 Modern language

 Object-oriented language

 Dynamically typed language

 Agile language



January 18, 2010         Radek Mika - Unicorn College   3
Principles of Ruby




January 18, 2010        Radek Mika - Unicorn College   4
Principles of Ruby




January 18, 2010        Radek Mika - Unicorn College   5
Principles of Ruby
 Japanese Design

       Focus on human factor

       Principle of Least Surprise

       Principle of Least Effort



January 18, 2010         Radek Mika - Unicorn College   6
The Principle of Least Surprise
This principle is the supreme design goal of Ruby
       It makes programmers happy
       It makes Ruby easy to learn
Examples
      What class is an object?
                   o.class
      Is it Array.size or Array.length?
                   same method - they are aliased
      What are the differences between arrays?
                   Diff = ary1 – ary2
                   Union = ary1 + ary2

January 18, 2010               Radek Mika - Unicorn College   7
The Principle of Least Effort
 We do not like to waste time
           Especially on XML configuration files, getters, setters, etc.


 Syntactic sugar wherever you look

 The quicker we program, the more we accomplish
           Sounds reasonable enough, does not it?


 Less code means less bugs



January 18, 2010                   Radek Mika - Unicorn College            8
Philosophy
 No perfect language

 Have joy

 Computers are my servants, not my masters!

 Unchangeable small core (syntax) and extensible class
  libraries



January 18, 2010        Radek Mika - Unicorn College      9
The History of Ruby
 Created in Japan 10 years ago

 Created by Yukihiro Matsumoto (known as
  Matz)

 Inspired by Perl, Python, Lisp and Smalltalk



January 18, 2010        Radek Mika - Unicorn College   10
Comparison with Python
 Interactive prompt (similar)
 No special line terminator (similar)
 Everything is an object (similar)


                     X
 More speed! (ruby is faster)
  …
January 18, 2010          Radek Mika - Unicorn College   11
Ruby is Truly Object-Oriented
 Ruby uses single inheritance
           X
 Mixins and Modules allow you to extend classes
  without multiple inheritance

 Reflection

 Things like ‘=’ and ‘+’ which may appear as
  operators are actually methods (like Smalltalk)

January 18, 2010    Radek Mika - Unicorn College    12
Well, that’s all nice but…




                       …is it FAST?
January 18, 2010           Radek Mika - Unicorn College   13
Merge Sort Algorithm




January 18, 2010       Radek Mika - Unicorn College   14
Ruby Speed Comparison

 3x faster than      PHP

 2.5x faster than    Perl

 2x faster than      Python



 2x (maybe more)     C++
 SLOWER than




January 18, 2010              Radek Mika - Unicorn College   15
Ruby Speed - WARNING


 Previous results are only
 informational (only Merge Sort
 Comparison)

 Another comparisons usually
 have different results




January 18, 2010         Radek Mika - Unicorn College   16
When I should not use Ruby?
 If I need highly effective and powerful language, e.g.
  for distributed calculations
 If I want to write a complicated, ugly or messy code


     Other disadvantages:


 Less spread than Perl is
 Ruby is relatively slow

January 18, 2010       Radek Mika - Unicorn College        17
And finally…




                   …some code examples
January 18, 2010         Radek Mika - Unicorn College   18
Clear Syntax
# Output "UPPER"
puts "upper".upcase

# Output the absolute value of -5:
puts -5.abs

# Output "Ruby Rocks!" 5 times
5.times do
  puts "Ruby Rocks!"
end
Source: http://pastie.org/785234


January 18, 2010                   Radek Mika - Unicorn College   19
Classes and Methods
#Classes begin with class and end with end:
# The Greeter class
class Greeter
end

#Methods begin with def and end with end:
# The salute method
def salute
end
Source: http://pastie.org/785249


January 18, 2010                   Radek Mika - Unicorn College   20
Classes and Methods
# The Greeter class
class Greeter
  def initialize(greeting)
    @greeting = greeting
  end

  def salute(name)
    puts "#{@greeting} #{name}!"
  end
end

# Initialize our Greeter
g = Greeter.new("Hello")

# Output "Hello World!"
g.salute("World")

Source: http://pastie.org/785258 - classes


January 18, 2010                     Radek Mika - Unicorn College   21
If Statements
# if with several branches
if account.total > 100000
  puts "large account"
elsif account.total > 25000
  puts "medium account"
else
  puts "small account„
end
Sources: http://pastie.org/785268



January 18, 2010                    Radek Mika - Unicorn College   22
Case Statements
# A simple case/when statement
case name
when "John"
  puts "Howdy John!"
when "Ryan"
  puts "Whatz up Ryan!"
else
  puts "Hi #{name}!"
end
Sources: http://pastie.org/785278


January 18, 2010                    Radek Mika - Unicorn College   23
Regular Expressions
#Ruby supports Perl-style regular expressions:
# Extract the parts of a phone number

phone = "123-456-7890"

if phone           =~ /(d{3})-(d{3})-(d{4})/
  ext =            $1
  city =           $2
  num =            $3
end
Sources: http://pastie.org/785732


January 18, 2010                    Radek Mika - Unicorn College   24
Regular Expressions
# Case statement with regular expression
case lang
when /ruby/i
  puts "Matz created Ruby!"
when /perl/i
  puts "Larry created Perl!"
else
  puts "I don't know who created #{lang}."
end
Sources: http://pastie.org/785738



January 18, 2010                    Radek Mika - Unicorn College   25
Ruby Blocks
# Print out a list of people from
# each person in the Array
people.each do |person|
  puts "* #{person.name}"
end

# A block using the bracket syntax
5.times { puts "Ruby rocks!" }

# Custom sorting
[2,1,3].sort! { |a, b| b <=> a }

Sources: http://pastie.org/pastes/785239



January 18, 2010                     Radek Mika - Unicorn College   26
Yield to the Block!
# define the thrice method
def thrice
  yield
  yield
  yield
end

# Output "Blocks are cool!" three times
thrice { puts "Blocks are cool!" }

#This example use yield from within a method to
#hand control over to a block:
Sources: http://pastie.org/785774



January 18, 2010                    Radek Mika - Unicorn College   27
Blocks with Parameters
# redefine the thrice method
def thrice
  yield(1)
  yield(2)
  yield(3)
end

# Output "Blocks are cool!" three times,
# prefix it with the count
thrice { | i |
  puts "#{i}: Blocks are cool!"
}
Sources: http://pastie.org/785789



January 18, 2010                    Radek Mika - Unicorn College   28
Enough talking about Ruby!...




              What about Ruby on Rails?
January 18, 2010      Radek Mika - Unicorn College   29
Ruby on Rails
 Web framework

 An extremely productive web-application
  framework that is written in Ruby by
  David Hansson

 Includes everything needed to create database-driven web
  applications according to the Model-View-Control pattern
  of separation

 So-called reason of spreading ruby


January 18, 2010       Radek Mika - Unicorn College      30
Ruby on Rails
 MVC

 Convention over Configurations

 Don’t Repeat Yourself (DRY)




January 18, 2010     Radek Mika - Unicorn College   31
History
 Predominantly written by David H. Hannson
       Talented designer
       His dream is to change the world
       A 37signals.com principal – World class designers


 Since 2005



January 18, 2010        Radek Mika - Unicorn College        32
Model – View - Controller
 MVC is an architectural pattern, used not only for building web
  applications

 Model classes are the "smart" domain objects (such as Account,
  Product, Person, Post) that hold business logic and know how to
  persist themselves to a database

 Views are HTML templates

 Controllers handle incoming requests (such as Save New Account,
  Update Product, Show Post) by manipulating the model and
  directing data to the view



January 18, 2010           Radek Mika - Unicorn College             33
Active Record
Object/Relational Mapping Framework = Active Record

 Automatic mapping between columns and class
  attributes
 Declarative configuration via macros
 Dynamic finders
 Associations, Aggregations, Tree and List Behaviors
 Locking
 Lifecycle Callbacks
 Single-table inheritance supported
 Validation rules

January 18, 2010       Radek Mika - Unicorn College     34
From Controller to View
Rails gives you many rendering options

 Default template rendering
             Just follow naming conventions and magic happens.


 Explicitly render to particular action

 Redirect to another action

 Render a string response (or no response)
January 18, 2010                 Radek Mika - Unicorn College    35
View Template
ERB –Embedded Ruby

 Similar to JSPs <% and <%= syntax

 Easy to learn and teach for designers

 Execute in scope of controller

 Denoted with .rhtml extension

January 18, 2010      Radek Mika - Unicorn College   36
View Template
XmlMarkup –Programmatic View Construction

 Great for writing xhtml and xml content

 Denoted with .rxml extension

 Embeddable in ERB templates

January 18, 2010      Radek Mika - Unicorn College   37
And Much More…
    Templates and partials
    Pagination
    Caching (page, fragment, action)
    Helpers
    Routing with routes.rb
    Exceptions
    Unit testing
    ActiveSupport API (date conversion, time calculations)
    ActionMailer API
    ActionWebService API
    Rake

January 18, 2010          Radek Mika - Unicorn College        38
Sources
   Ruby on Rails (Agile Atlanta Group) – Obie Fernandez – May 10 ’05
   Ruby Language Overview – Muhamad Admin Rastgee
   Ruby on Rails – Curt Hibbs
   Workin’ on the Rails Road – Obie Fernandez
   Get to the Point! (Development with Ruby on Rails) – Ryan Platte, John W. Long

   Ruby speed comparison (http://is.gd/70hjD)

   http://en.wikipedia.org/wiki/Ruby_on_Rails




January 18, 2010                 Radek Mika - Unicorn College                        39
External Links
   http://ruby-lang.org – official website

   http://www.ruby-doc.org/ - Ruby doc project

   http://rubyforge.org/ - projects in Ruby

   http://www.rubycentral.com/book/ - online book Programming Ruby

   Full Ruby on Rails Tutorial

   Euruko 2008 - videos from European Ruby Conference 2008 in Prague on avc-
    cvut.cz (Czech)



January 18, 2010                  Radek Mika - Unicorn College                  40
Between Q&A…
   … you can run this code …




     … do you still think that you have a fast computer? :)


January 18, 2010        Radek Mika - Unicorn College          41
Acknowledgments & Contact

    Special thanks to Mgr. Veronika Kaplanová for English correction.




                       Radek Mika
                        radek@radekmika.cz
                        @radekmika (twitter)


January 18, 2010           Radek Mika - Unicorn College             42
January 18, 2010   Radek Mika - Unicorn College   43

More Related Content

PDF
Comandos linux
PPTX
Commands of DML in SQL
PPTX
Operator overloading
PPTX
Agile at Socialbakers - processes, technologies, teams and scaling...
PDF
10 Secrets of Agile Transformation
PDF
IJTC%202009%20JRuby
PDF
IJTC%202009%20JRuby
PPT
Rapid Application Development using Ruby on Rails
Comandos linux
Commands of DML in SQL
Operator overloading
Agile at Socialbakers - processes, technologies, teams and scaling...
10 Secrets of Agile Transformation
IJTC%202009%20JRuby
IJTC%202009%20JRuby
Rapid Application Development using Ruby on Rails

Similar to Programming language Ruby and the Rails framework (20)

PPTX
Why Ruby?
ZIP
Meta Programming in Ruby - Code Camp 2010
KEY
Ruby on Rails Training - Module 1
PDF
Ruby on Rails: a brief introduction
PDF
Web Development With Ruby - From Simple To Complex
KEY
Introduction to Ruby
PDF
Connecting the Worlds of Java and Ruby with JRuby
PDF
Ruby an overall approach
PPTX
Day 1 - Intro to Ruby
PPT
WorkinOnTheRailsRoad
PPT
Workin ontherailsroad
PPTX
Code for Startup MVP (Ruby on Rails) Session 2
PPTX
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
PDF
Ruby 4.0 To Infinity and Beyond at Ruby Conference Kenya 2017 by Bozhidar Batsov
PDF
Introduction to Ruby & Modern Programming
PPTX
Ruby for .NET developers
PDF
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
PDF
Ruby is an Acceptable Lisp
PDF
Workin On The Rails Road
PPTX
On the path to become a jr. developer short version
Why Ruby?
Meta Programming in Ruby - Code Camp 2010
Ruby on Rails Training - Module 1
Ruby on Rails: a brief introduction
Web Development With Ruby - From Simple To Complex
Introduction to Ruby
Connecting the Worlds of Java and Ruby with JRuby
Ruby an overall approach
Day 1 - Intro to Ruby
WorkinOnTheRailsRoad
Workin ontherailsroad
Code for Startup MVP (Ruby on Rails) Session 2
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
Ruby 4.0 To Infinity and Beyond at Ruby Conference Kenya 2017 by Bozhidar Batsov
Introduction to Ruby & Modern Programming
Ruby for .NET developers
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby is an Acceptable Lisp
Workin On The Rails Road
On the path to become a jr. developer short version
Ad

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Cloud computing and distributed systems.
PDF
Approach and Philosophy of On baking technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
A Presentation on Artificial Intelligence
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Cloud computing and distributed systems.
Approach and Philosophy of On baking technology
Network Security Unit 5.pdf for BCA BBA.
Unlocking AI with Model Context Protocol (MCP)
20250228 LYD VKU AI Blended-Learning.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
A comparative analysis of optical character recognition models for extracting...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Agricultural_Statistics_at_a_Glance_2022_0.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
A Presentation on Artificial Intelligence
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Machine learning based COVID-19 study performance prediction
Digital-Transformation-Roadmap-for-Companies.pptx
MIND Revenue Release Quarter 2 2025 Press Release
Ad

Programming language Ruby and the Rails framework

  • 1. Ruby programming language and Ruby on Rails framework
  • 2. Presentation Agenda  What is Ruby?  About the language  Its history  Principles of language  Code examples  Rails framework January 18, 2010 Radek Mika - Unicorn College 2
  • 3. What is Ruby?  Programming language  Interpreted language  Modern language  Object-oriented language  Dynamically typed language  Agile language January 18, 2010 Radek Mika - Unicorn College 3
  • 4. Principles of Ruby January 18, 2010 Radek Mika - Unicorn College 4
  • 5. Principles of Ruby January 18, 2010 Radek Mika - Unicorn College 5
  • 6. Principles of Ruby  Japanese Design  Focus on human factor  Principle of Least Surprise  Principle of Least Effort January 18, 2010 Radek Mika - Unicorn College 6
  • 7. The Principle of Least Surprise This principle is the supreme design goal of Ruby  It makes programmers happy  It makes Ruby easy to learn Examples  What class is an object? o.class  Is it Array.size or Array.length? same method - they are aliased  What are the differences between arrays? Diff = ary1 – ary2 Union = ary1 + ary2 January 18, 2010 Radek Mika - Unicorn College 7
  • 8. The Principle of Least Effort  We do not like to waste time Especially on XML configuration files, getters, setters, etc.  Syntactic sugar wherever you look  The quicker we program, the more we accomplish Sounds reasonable enough, does not it?  Less code means less bugs January 18, 2010 Radek Mika - Unicorn College 8
  • 9. Philosophy  No perfect language  Have joy  Computers are my servants, not my masters!  Unchangeable small core (syntax) and extensible class libraries January 18, 2010 Radek Mika - Unicorn College 9
  • 10. The History of Ruby  Created in Japan 10 years ago  Created by Yukihiro Matsumoto (known as Matz)  Inspired by Perl, Python, Lisp and Smalltalk January 18, 2010 Radek Mika - Unicorn College 10
  • 11. Comparison with Python  Interactive prompt (similar)  No special line terminator (similar)  Everything is an object (similar) X  More speed! (ruby is faster) … January 18, 2010 Radek Mika - Unicorn College 11
  • 12. Ruby is Truly Object-Oriented  Ruby uses single inheritance X  Mixins and Modules allow you to extend classes without multiple inheritance  Reflection  Things like ‘=’ and ‘+’ which may appear as operators are actually methods (like Smalltalk) January 18, 2010 Radek Mika - Unicorn College 12
  • 13. Well, that’s all nice but… …is it FAST? January 18, 2010 Radek Mika - Unicorn College 13
  • 14. Merge Sort Algorithm January 18, 2010 Radek Mika - Unicorn College 14
  • 15. Ruby Speed Comparison 3x faster than PHP 2.5x faster than Perl 2x faster than Python 2x (maybe more) C++ SLOWER than January 18, 2010 Radek Mika - Unicorn College 15
  • 16. Ruby Speed - WARNING Previous results are only informational (only Merge Sort Comparison) Another comparisons usually have different results January 18, 2010 Radek Mika - Unicorn College 16
  • 17. When I should not use Ruby?  If I need highly effective and powerful language, e.g. for distributed calculations  If I want to write a complicated, ugly or messy code Other disadvantages:  Less spread than Perl is  Ruby is relatively slow January 18, 2010 Radek Mika - Unicorn College 17
  • 18. And finally… …some code examples January 18, 2010 Radek Mika - Unicorn College 18
  • 19. Clear Syntax # Output "UPPER" puts "upper".upcase # Output the absolute value of -5: puts -5.abs # Output "Ruby Rocks!" 5 times 5.times do puts "Ruby Rocks!" end Source: http://pastie.org/785234 January 18, 2010 Radek Mika - Unicorn College 19
  • 20. Classes and Methods #Classes begin with class and end with end: # The Greeter class class Greeter end #Methods begin with def and end with end: # The salute method def salute end Source: http://pastie.org/785249 January 18, 2010 Radek Mika - Unicorn College 20
  • 21. Classes and Methods # The Greeter class class Greeter def initialize(greeting) @greeting = greeting end def salute(name) puts "#{@greeting} #{name}!" end end # Initialize our Greeter g = Greeter.new("Hello") # Output "Hello World!" g.salute("World") Source: http://pastie.org/785258 - classes January 18, 2010 Radek Mika - Unicorn College 21
  • 22. If Statements # if with several branches if account.total > 100000 puts "large account" elsif account.total > 25000 puts "medium account" else puts "small account„ end Sources: http://pastie.org/785268 January 18, 2010 Radek Mika - Unicorn College 22
  • 23. Case Statements # A simple case/when statement case name when "John" puts "Howdy John!" when "Ryan" puts "Whatz up Ryan!" else puts "Hi #{name}!" end Sources: http://pastie.org/785278 January 18, 2010 Radek Mika - Unicorn College 23
  • 24. Regular Expressions #Ruby supports Perl-style regular expressions: # Extract the parts of a phone number phone = "123-456-7890" if phone =~ /(d{3})-(d{3})-(d{4})/ ext = $1 city = $2 num = $3 end Sources: http://pastie.org/785732 January 18, 2010 Radek Mika - Unicorn College 24
  • 25. Regular Expressions # Case statement with regular expression case lang when /ruby/i puts "Matz created Ruby!" when /perl/i puts "Larry created Perl!" else puts "I don't know who created #{lang}." end Sources: http://pastie.org/785738 January 18, 2010 Radek Mika - Unicorn College 25
  • 26. Ruby Blocks # Print out a list of people from # each person in the Array people.each do |person| puts "* #{person.name}" end # A block using the bracket syntax 5.times { puts "Ruby rocks!" } # Custom sorting [2,1,3].sort! { |a, b| b <=> a } Sources: http://pastie.org/pastes/785239 January 18, 2010 Radek Mika - Unicorn College 26
  • 27. Yield to the Block! # define the thrice method def thrice yield yield yield end # Output "Blocks are cool!" three times thrice { puts "Blocks are cool!" } #This example use yield from within a method to #hand control over to a block: Sources: http://pastie.org/785774 January 18, 2010 Radek Mika - Unicorn College 27
  • 28. Blocks with Parameters # redefine the thrice method def thrice yield(1) yield(2) yield(3) end # Output "Blocks are cool!" three times, # prefix it with the count thrice { | i | puts "#{i}: Blocks are cool!" } Sources: http://pastie.org/785789 January 18, 2010 Radek Mika - Unicorn College 28
  • 29. Enough talking about Ruby!... What about Ruby on Rails? January 18, 2010 Radek Mika - Unicorn College 29
  • 30. Ruby on Rails  Web framework  An extremely productive web-application framework that is written in Ruby by David Hansson  Includes everything needed to create database-driven web applications according to the Model-View-Control pattern of separation  So-called reason of spreading ruby January 18, 2010 Radek Mika - Unicorn College 30
  • 31. Ruby on Rails  MVC  Convention over Configurations  Don’t Repeat Yourself (DRY) January 18, 2010 Radek Mika - Unicorn College 31
  • 32. History  Predominantly written by David H. Hannson  Talented designer  His dream is to change the world  A 37signals.com principal – World class designers  Since 2005 January 18, 2010 Radek Mika - Unicorn College 32
  • 33. Model – View - Controller  MVC is an architectural pattern, used not only for building web applications  Model classes are the "smart" domain objects (such as Account, Product, Person, Post) that hold business logic and know how to persist themselves to a database  Views are HTML templates  Controllers handle incoming requests (such as Save New Account, Update Product, Show Post) by manipulating the model and directing data to the view January 18, 2010 Radek Mika - Unicorn College 33
  • 34. Active Record Object/Relational Mapping Framework = Active Record  Automatic mapping between columns and class attributes  Declarative configuration via macros  Dynamic finders  Associations, Aggregations, Tree and List Behaviors  Locking  Lifecycle Callbacks  Single-table inheritance supported  Validation rules January 18, 2010 Radek Mika - Unicorn College 34
  • 35. From Controller to View Rails gives you many rendering options  Default template rendering Just follow naming conventions and magic happens.  Explicitly render to particular action  Redirect to another action  Render a string response (or no response) January 18, 2010 Radek Mika - Unicorn College 35
  • 36. View Template ERB –Embedded Ruby  Similar to JSPs <% and <%= syntax  Easy to learn and teach for designers  Execute in scope of controller  Denoted with .rhtml extension January 18, 2010 Radek Mika - Unicorn College 36
  • 37. View Template XmlMarkup –Programmatic View Construction  Great for writing xhtml and xml content  Denoted with .rxml extension  Embeddable in ERB templates January 18, 2010 Radek Mika - Unicorn College 37
  • 38. And Much More…  Templates and partials  Pagination  Caching (page, fragment, action)  Helpers  Routing with routes.rb  Exceptions  Unit testing  ActiveSupport API (date conversion, time calculations)  ActionMailer API  ActionWebService API  Rake January 18, 2010 Radek Mika - Unicorn College 38
  • 39. Sources  Ruby on Rails (Agile Atlanta Group) – Obie Fernandez – May 10 ’05  Ruby Language Overview – Muhamad Admin Rastgee  Ruby on Rails – Curt Hibbs  Workin’ on the Rails Road – Obie Fernandez  Get to the Point! (Development with Ruby on Rails) – Ryan Platte, John W. Long  Ruby speed comparison (http://is.gd/70hjD)  http://en.wikipedia.org/wiki/Ruby_on_Rails January 18, 2010 Radek Mika - Unicorn College 39
  • 40. External Links  http://ruby-lang.org – official website  http://www.ruby-doc.org/ - Ruby doc project  http://rubyforge.org/ - projects in Ruby  http://www.rubycentral.com/book/ - online book Programming Ruby  Full Ruby on Rails Tutorial  Euruko 2008 - videos from European Ruby Conference 2008 in Prague on avc- cvut.cz (Czech) January 18, 2010 Radek Mika - Unicorn College 40
  • 41. Between Q&A… … you can run this code … … do you still think that you have a fast computer? :) January 18, 2010 Radek Mika - Unicorn College 41
  • 42. Acknowledgments & Contact Special thanks to Mgr. Veronika Kaplanová for English correction. Radek Mika radek@radekmika.cz @radekmika (twitter) January 18, 2010 Radek Mika - Unicorn College 42
  • 43. January 18, 2010 Radek Mika - Unicorn College 43