techninjas ep.1: intro to ruby on rails

25
RUBY ON RAILS AN INTRODUCTION

Upload: seeqnce

Post on 06-May-2015

642 views

Category:

Technology


1 download

DESCRIPTION

On October 6 2011, Seeqnce hosted a full house of developers, entrepreneurs and startup fans to watch Costa Nicolaou (@cnicolaou) give a talk about Ruby on Rails. As a master of Rails (we call his kind Ninjas), Costa took the audience through the MVC fundamentals of the platform, dived straight into code examples and gave real-world examples of why RoR is such an appealing framework to adopt. Make sure you check out the full video at: http://bit.ly/p8pAp0

TRANSCRIPT

Page 1: TechNinjas Ep.1: Intro to Ruby On Rails

RUBY ON RAILS

AN INTRODUCTION

Page 2: TechNinjas Ep.1: Intro to Ruby On Rails

ABOUT ME

• Constantine Nicolaou

• Software Developer

•Works for Mekentosj B.V. (UK)

• twitter : @cnicolaou

• github: cnicolaou

Page 3: TechNinjas Ep.1: Intro to Ruby On Rails

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)

Page 4: TechNinjas Ep.1: Intro to Ruby On Rails

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)

Page 5: TechNinjas Ep.1: Intro to Ruby On Rails

BEAUTIFUL SYNTAX? REALLY?RAILS CONTROLLER CLASS

Page 6: TechNinjas Ep.1: Intro to Ruby On Rails

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$ irbree-1.8.7-2011.03 :001 > def add(number1, number2); number1 +number2; end;ree-1.8.7-2011.03 :002 > add(1, 5)=> 6

Page 7: TechNinjas Ep.1: Intro to Ruby On Rails

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

Page 8: TechNinjas Ep.1: Intro to Ruby On Rails

CODE EXAMPLES

simple loop in Ruby

simple loop in PHP

loop in Java

simplest loop so far?

Page 9: TechNinjas Ep.1: Intro to Ruby On Rails

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

Page 10: TechNinjas Ep.1: Intro to Ruby On Rails

ALSO, BIG NAMESRUBYONRAILS.ORG/APPLICATIONS

Page 11: TechNinjas Ep.1: Intro to Ruby On Rails

RAILS MVCHOW DOES IT WORK?

Page 12: TechNinjas Ep.1: Intro to Ruby On Rails

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)

Page 13: TechNinjas Ep.1: Intro to Ruby On Rails

SHOW US SOME CODE

...switching to terminal

Page 14: TechNinjas Ep.1: Intro to Ruby On Rails

ACTIVERECORD - 2

• Associations (has_one, has_many, belongs_to, has_and_belongs_to_many)

• Validations: rules in models on objectsvalidates_presence_of :name

• Callbacks: before_save, before_update, after_create

Page 15: TechNinjas Ep.1: Intro to Ruby On Rails

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

Page 16: TechNinjas Ep.1: Intro to Ruby On Rails

BACK TO PAPERSPAPERS: SEARCH, READ, CITE, SHARE

Page 17: TechNinjas Ep.1: Intro to Ruby On Rails

AVOIDING THIS

Page 18: TechNinjas Ep.1: Intro to Ruby On Rails

LIVFE IS PAPERS COLLABORATIVE SOLUTION

Your Papers life, live.Papers Livfe

Page 19: TechNinjas Ep.1: Intro to Ruby On Rails

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

Page 20: TechNinjas Ep.1: Intro to Ruby On Rails

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)

Page 21: TechNinjas Ep.1: Intro to Ruby On Rails

EXAMPLE OF AN API

Consuming the API (with cURL)curl -X GET -H "Accept: text/xml" http://username:[email protected]/api/v1.2/collections/

Page 22: TechNinjas Ep.1: Intro to Ruby On Rails

ONE MORE THING

Page 23: TechNinjas Ep.1: Intro to Ruby On Rails

“Your time is limited, so don’t waste it living someone else’s life… Stay hungry. Stay foolish.”Steve Jobs, Stanford 2005

Page 24: TechNinjas Ep.1: Intro to Ruby On Rails

THANK YOU

QUESTIONS?

Page 25: TechNinjas Ep.1: Intro to Ruby On Rails

RESOURCES

railscasts.com

tryruby.org

ruby.railstutorial.org

railsforzombies.org

peepcode.com