Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby on Rails. An introduction

costa
October 07, 2011

Ruby on Rails. An introduction

An introduction to Ruby on Rails at Seeqnce Tech Ninjas Series

costa

October 07, 2011
Tweet

More Decks by costa

Other Decks in Programming

Transcript

  1. ABOUT ME • Constantine Nicolaou • Software Developer • Works

    for Mekentosj B.V. (UK) • twitter: @cnicolaou • github: cnicolaou
  2. ABOUT RUBY • Creator: Yukihiro Matsumoto (Matz) • Released in

    1995 • Open Source • Remained relatively underused outside of Japan until Rails brought it to prominence (2003) • Cross platform (OS X, Linux and Windows) • RubyGems: package manager for Ruby (gem install rails)
  3. ABOUT RAILS (ELEVATOR PITCH) • Open Source web framework created

    by David Heinemeier Hansson (DHH) in 2003 (get it from github.com/rails/rails) • Developed with happiness and productivity of developers in mind • Beautiful and readable syntax (thanks to Ruby) • Favours convention over configuration (plural tables names, singular model names) • Don’t Repeat Yourself (DRY)
  4. MORE ON RUBY • Everything is an Object • Dynamic

    (no type declarations) • No brackets for simple method calls • Last statement of a method is automatically returned (18:09) costa:~/dev/apps$ irb ree-1.8.7-2011.03 :001 > def add(number1, number2); number1 +number2; end; ree-1.8.7-2011.03 :002 > add(1, 5) => 6
  5. RUBY DATA STRUCTURES data type literal description integer 1 range

    1..5 string ‘rails’ float 1.0 floating-point representation symbol :rails string for identifying purpose array [‘a’, ‘b’] list of objects, fixed order hash {:a=>1} Collection of key, value pairs
  6. CODE EXAMPLES simple loop in Ruby simple loop in PHP

    loop in Java simplest loop so far?
  7. SO, WHY RAILS? • Easy, fast and fun way to

    develop web applications • MVC (Model-View-Controller) architectural pattern • Predefined application structure • Rails was built with testing support in mind (test folder exists by default in the application structure) • Different environments within the same application (database.yml) • Active community and lots of resources to learn from
  8. ACTIVERECORD (OBJECT-RELATION MAPPING (ORM) PUT ON RAILS) • ORM pattern:

    An object that wraps a row in a database table... and adds domain logic on that data (Martin Fowler) • Ruby classes that are located under app/models • One database table maps to one Ruby class • Attributes are columns • Associations between objects (A user has many blog posts)
  9. ACTIVERECORD - 2 • Associations (has_one, has_many, belongs_to, has_and_belongs_to_many) •

    Validations: rules in models on objects validates_presence_of :name • Callbacks: before_save, before_update, after_create
  10. ACTIONVIEW • Embedding Ruby in HTML (ERb template engine) <h1>People</h1>

    <ul> <% @people.each do |person| -%> <li><%= person.first_name %></li> <% end -%> </ul> • Forms: Form Helpers / to HTML / to params / to ActiveRecord then validate attributes and save
  11. PAPERS LIVFE • Organise and share papers using Livfe Collections

    • Micro comments, reviews and ratings on papers • Send and receive papers recommendations • Adds collaboration to existing workflow
  12. PAPERS LIVFE (UNDER THE HOOD) • Based on Ruby on

    Rails • Private APIs to Papers apps (Mac, iOS) • Different representational formats based on request types • Recommend papers to users based on criteria (for example: keywords or field of interest or job title)
  13. EXAMPLE OF AN API Consuming the API (with cURL) curl

    -X GET -H "Accept: text/xml" http://username:[email protected]/api/v1.2/collections/
  14. “Your time is limited, so don’t waste it living someone

    else’s life… Stay hungry. Stay foolish.” Steve Jobs, Stanford 2005