Ruby -the wheel Technology

Preview:

Citation preview

RUBY :

The Wheel Technology

HISTORY Ruby was conceived on February 24, 1993 by Yukihiro Matsumoto (a.k.a “Matz”)who wished to create a new language that balanced function programming  with imperative programming. 

Matsumoto has stated, "I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python.

At a Google Tech Talk in 2008 Matsumoto further stated, "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language."

PRINCIPLE Ruby is said to follow the principle of least astonishment (POLA), meaning that the language should behave in such a way as to minimize confusion for experienced users.

Matsumoto has said his primary design goal was to make a language which he himself enjoyed using, by minimizing programmer work and possible confusion.

COMPARISON

Dynamic vs. Static typing

Scripting vs. Complied Language -use interpreter -use compiler

Object oriented vs. Procedure oriented

WHAT IS RUBY ?

Paradigm : Multi-paradigm 1.object-oriented 2. functional, 3.dynamic 4. imperative

Typing- : : 1.Dynamic discipline 2.Duck 3.strong

Non commercial : Open Source Influenced by : Ada, C++, Perl, Smalltalk,

Python , Eiffel

CONT..Os : cross platform(windows , mac os , linux etc.)

Stable release : 1.9.2 (February ,18 2011)

Major implementations : RubyMRI , YARV , Jruby , Rubinius, IronRuby , MacRuby , HotRuby

License : Ruby license or General public license

Usual file extension : .rb , .rbw

Automatic memory management(Garbage collection)

WHY RUBY? Easy to learn

Open source (very liberal license) Rich libraries Very easy to extend Truly Object-Oriented

-Everything is an object. Single inheritance

- Mixins give you the power of multiple inheritance with the problems .

SIMPLE “ HELLO, WORLD ” PROGRAM

# simply give hello world

puts “hello , world..”

Output: hello , world..

Comment in ruby

WHERE TO WRITE RUBY CODE?

IDE or Editors: 1. Net beans 2. Eclipse(mostly used today) 3. Text Mate (mac os) 4. Ultra editor 5. E 6. Heroku( completely online solution for application )

RUBY SYNTAX Ruby syntax is similar with Perl and Python .

1.Adding comment - All text in ruby using # symbol consider as comment.so that ruby interpreter ignored it. 1.a For large block =begin This is a multi-line block of comments in a Ruby source file. Added: January 1, 2011 =end Puts “This is Ruby code

CONT..

2.Using parentheses : - parentheses are optional in ruby Ex. In below ,you could call it like this.. movie.set_title(“Star Wars”) Or you could call it without parentheses movie.set_title “Star Wars”

Require, when chaining methods are used, Ex. puts movie.set_title(“Star Wars”)

3.Using semicolonsSemicolons are a common indicator of a line or statement ending. In Ruby, the use of semicolons

to end your lines is not required. def add_super_power(power) @powers.add(power) end

The only time using semicolons is required is if you want to use more than one statement on a single line

def add_super_power(power) @powers.add(power); puts “added new power” end

CONT..

Indicate more than one statement on single line

BEGIN END alias and Begin

break case def class defined?

do else elsif end ensure

false for if in module

next nil not or redo

rescue retry undef self super

then true return unless until

when while yield

KEYWORDS & IDENTIFIERS

VARIABLESLocal variables:begin with lowercase or underscore Ex : alpha , _identPseudovariables : self ,nilGlobal variables: begin with $ (dollar sign) Ex: $beta, $NOT_CONSTInstance variables: begin with @ sign Ex:@foobarClass variables: begin with @@sign Ex:@@my_varConstants : begin with capital Ex:Length

OPERATORS

:: Scope[] Indexing** Exponentiation+ - ! ~ Unary* / + - % Binary << >> Logical shifts&(and) |(or) ^(xor) Bitwise< >= < <= Comparision&& || Boolean and ,or.. … Range?: Ternary decision

LOOPING AND BRANCHING

if x<5 then state1 end if x<5 then state1 else state2 end x = if a>0 then b else c end

unless x>=5 then

state1

end

unless x>=5 then

state1

else

state2

end

x = unless a<=0 then b else c end

“ If ” Form “ Unless ” Form

LOOPING (FOR, WHILE, LOOP )

1. # loop1 (while) i=0 while i < 10 do print “ # {i} ” i+=1 end

2. # loop2(loop) i=0 loop do print “ # {i} ” i+=1 break if i>10 end

output: 0 to 9

output: 0 to 9

CONT..

3.# loop3 (for) for i in 0..9 do print “#{i}” end

output: 0 to 9

STANDARD TYPE

- Integer within a certain range . (normally -230 to 230-1 or -262 to 262-1)

-Also support Float numbers - Complex numbers

Interger

Bignum Fixnum

CONT.. 123456 # Fixnum 123_456 # Fixnum (underscore ignored) -543 # Negative Fixnum 123_456_789_123_345_789 # Bignum 0xaabb # Hexadecimal 0377 # Octal 0b101_010 # Binary

Some of operation on numbers: a= 64**2 # ans.4096 b=64**0.5 # ans. 8.0 c=64**0 # ans.1 Complex number a=3.im #3i b= 5-2im #5-2i c=Complex(3,2) # 3+2i Base conversion 237.to_s(2) #”11101101” 237.to_s(8) #”355 ” 237.to_s(16) #”0xed ”

CONT..

OOP IN RUBY

In ruby , every thing is an object . like, string, array, regular expression etc.

Ex. - “abc”. upcase # “ABC” - 123.class #Fixnum - “abc”.class #String - “abc”.class .class #Class - 1.size # 4 - 2.even? # true - 1.next # 2

STRINGS

Ruby strings are simply sequences of 8-bit bytes. They normally hold printable characters, but that is not a requirement; a string can also hold binary data. Strings are objects of class String. Working with String:1.Searching str =“Albert Einstein ” p1= str.index(?E) #7 p2= str.index(“bert”) #2 p3=str.index(?w) #nil

CONT..

1.a Substring is present or not? str =“mathematics” flag1=str.include? ?e # true flag2=str.include? “math” # true

2. Converting string to numbers x=“123”.to_i #123 y=“3.142”.to_f #3.14 z=Interger(“0b111”) #binary –return 7

3. Counting character in string s1=“abracadabra” a=s1.count(“c”) # 1 b=s1.count(“ bdr ”) #54. Reversing a String s1=“Star World” s2=s1.reverse # “dlroW ratS” s3=s1.split(“ ” ) # [“Star” ”World”] s4=s3.join(“ ”) # “Star World ”

CONT..

5. Removing Duplicate characters s1=“bookkeeper” s2=s1.squeeze # “ bokeper ” s3=“Hello..” # specific character only s4=s3.squeeze(“.”) # “hello.”

CONT..

ARRAY & HASHES

The array is the most common collection class and is also one of the most often used classes in Ruby. An array stores an ordered list of indexed values with the index starting at 0. Ruby implements arrays using the Array class. Creating and initializing an array Ex. a=Array[1,2,3,4] or a=[1,2,3,4] or a=Array.new(3) #[nil,nil,nil]

CONT.. Finding array size x=[“a”, “b”, “ c”] a=x.length # 3 or a=x.size #3 Sorting array a=[1, 2 , “three ”, “four”,5,6] b=a.sort {|x,y|x.to_d<=>y.to_s } # ans. [1,2,5,6, “four”, “three”] x=[5,6,1,9] y=x.sort{|a,b| a<=>b} #ans.[1,5,6,9]

HASHES Hashes are known as in some circle as

associative arrays , dictionaries.

Major difference between array & hashes

- An Array is an ordered data structure. - Whereas a Hash is disordered data structure.

CONT..

Hashes are used as “key->value” pairs Both key & value are objects. Ex. h=Hash{ “dog”=> “animal” , “parrot”=> ‘”bird” } puts h.length #2 h[‘dog’] #animal h.has_value? “bird” # true h.key? “ cat” #false a=h.sort #[[“dog”, “animal”],[“parrot”, “bird”]] # It convet into array

REFERENCEBooks : 1. programming ruby language

-Yukihiro Matsumoto 

2.programming ruby language -David black 3.The Pragmatic Programmer's Guide

- Yukihiro Matsumoto 

4. The Ruby Way -Hal Fulton 5. The ruby -In Nutshell

- Yukihiro MatsumotoSites: http://www.ruby-lan.org

THANK YOU

PREVIOUS SESSION

HistoryPrincipleWhat is Ruby?Keyword & VariableStandard TypeObjectLooping &BranchingArrayStringHashes

THIS SESSION

Module

Method in Ruby

Class Variable & Class Method

Inheritance

Method Overriding

Method Overloading

CONT..

Ruby On Rails -Web Development

What is Rails?

Rails Strength

Rails & MVC Pattern

Rails Directory Structure

Creating Simple Web application

METHOD IN RUBY

How to define method in class?module pqr class xyz def a end …. endendExample:class Raser def initialize(name,vehicle) # constructor of class @name=name @vehicle=vehicle endend

CONT..

racer=Racer.new(“abc”, “ferrari ”)

puts racer.name # give abc

puts racer.vehicle # give ferrari

puts racer.inspect #give abc & ferrari both

creating object racer of class Racer

INHERITANCEInheritance is represented in ruby

subclass<superclass(extends keyword in java replace by < in ruby)Example:class Racercomp<Racer

def initialize (name,vehicle,rank) super(name,vehicle) @rank=rank end end x=Racercomp.new(“xyz”, “ferrari”, “10”) puts x.inspect

METHOD OVERRIDING class xyz def name puts “hi ,i am in xyz…” end end class abc<xyz def name puts “hi, i am in abc…” end end a=xyz.new b=abc.new puts a.name # hi, i am in xyz puts b.name # hi, i am in abc

METHOD OVERLOADING

class xyz def hello(name1) puts “hello ,#{name1}” end def hello(name1,name2) puts “hello ,#{name1} #{name2}” end a=xyz.new puts a.hello(i am) # hello , i am b=xyz.new puts b.hello(i am,fine) # hello , i am fine

ATTR_READER

Ruby provide methods using attr_reader class Song attr_reader :name, :artist, :duration end a=Song.new( “p” , “q”, “r”) puts a.inspect

Ruby on Rails - Web Development

WHAT IS RAILS?

An Extremely Productive web application framework that is written in Ruby by David Hansson.

Fully stack Framework

- Includes everything needed to create database drive Web application using MVC pattern. - Being a full stack Framework means that all layer are built to work seamlessly together.

RAILS & MVC PATTERN

M - Model(Active Record)

V – View(Active View)

C – Controller(Active Controller)

CONT..

MODEL- ACTIVE RECORD

Provide access to Database table - Record CRUD(Create, Read, Update , Delete)

It define also Validation & Association

VIEW – ACTIVE VIEW

The user screen or Web page of your application.

It should not contain any logic.

It should not know about model.

View are similar to PHP or ASP page.

It contain little presentation logic whenever possible.denoted with .rhtml extension.

CONTROLLER –ACTIVE CONTROLLER

The purpose of controller - Only flow control. - Handle user request. - Retrieve Data from model. - Invoke method on model. - Send to view and respond to users.

RAILS DIRECTORY STRUCTURE

SIMPLE APPLICATION

type rails name of application in plural

CONT..

http://localhost:300

0

CONT..

CONT..

REFERENCEBooks : 1. Head first rails -  David Griffiths 2. Begging of rails - Steven Holzner 3.The Pragmatic Programmer's Guide

- Yukihiro Matsumoto 

4. The Ruby Way - Hal Fulton 5. Agile web development –Ruby on Rails - David Heine Meier HanssonSites: http://www.ruby-lan.org

THANK YOU

Recommended