Programming language Ruby and the Rails framework

4,649 views
4,144 views

Published on

Published in: Technology
2 Comments
6 Likes
Statistics
Notes
  • great thanks for sharing.
    regards, Leeza Triouy

    http://www.yes-inspirations.blogspot.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • I've just uploaded latest version of this presentation.
    I hope it's final version.
    Feel free to ask any questions.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,649
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
134
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

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

×