ruby -the wheel technology
TRANSCRIPT
![Page 1: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/1.jpg)
RUBY :
The Wheel Technology
![Page 2: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/2.jpg)
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."
![Page 3: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/3.jpg)
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.
![Page 4: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/4.jpg)
COMPARISON
Dynamic vs. Static typing
Scripting vs. Complied Language -use interpreter -use compiler
Object oriented vs. Procedure oriented
![Page 5: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/5.jpg)
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
![Page 6: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/6.jpg)
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)
![Page 7: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/7.jpg)
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 .
![Page 8: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/8.jpg)
SIMPLE “ HELLO, WORLD ” PROGRAM
# simply give hello world
puts “hello , world..”
Output: hello , world..
Comment in ruby
![Page 9: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/9.jpg)
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 )
![Page 10: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/10.jpg)
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
![Page 11: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/11.jpg)
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”)
![Page 12: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/12.jpg)
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
![Page 13: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/13.jpg)
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
![Page 14: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/14.jpg)
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
![Page 15: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/15.jpg)
OPERATORS
:: Scope[] Indexing** Exponentiation+ - ! ~ Unary* / + - % Binary << >> Logical shifts&(and) |(or) ^(xor) Bitwise< >= < <= Comparision&& || Boolean and ,or.. … Range?: Ternary decision
![Page 16: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/16.jpg)
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
![Page 17: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/17.jpg)
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
![Page 18: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/18.jpg)
CONT..
3.# loop3 (for) for i in 0..9 do print “#{i}” end
output: 0 to 9
![Page 19: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/19.jpg)
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
![Page 20: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/20.jpg)
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
![Page 21: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/21.jpg)
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..
![Page 22: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/22.jpg)
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
![Page 23: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/23.jpg)
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
![Page 24: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/24.jpg)
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
![Page 25: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/25.jpg)
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..
![Page 26: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/26.jpg)
5. Removing Duplicate characters s1=“bookkeeper” s2=s1.squeeze # “ bokeper ” s3=“Hello..” # specific character only s4=s3.squeeze(“.”) # “hello.”
CONT..
![Page 27: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/27.jpg)
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]
![Page 28: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/28.jpg)
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]
![Page 29: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/29.jpg)
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.
![Page 30: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/30.jpg)
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
![Page 31: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/31.jpg)
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
![Page 32: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/32.jpg)
THANK YOU
![Page 33: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/33.jpg)
PREVIOUS SESSION
HistoryPrincipleWhat is Ruby?Keyword & VariableStandard TypeObjectLooping &BranchingArrayStringHashes
![Page 34: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/34.jpg)
THIS SESSION
Module
Method in Ruby
Class Variable & Class Method
Inheritance
Method Overriding
Method Overloading
![Page 35: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/35.jpg)
CONT..
Ruby On Rails -Web Development
What is Rails?
Rails Strength
Rails & MVC Pattern
Rails Directory Structure
Creating Simple Web application
![Page 36: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/36.jpg)
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
![Page 37: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/37.jpg)
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
![Page 38: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/38.jpg)
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
![Page 39: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/39.jpg)
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
![Page 40: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/40.jpg)
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
![Page 41: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/41.jpg)
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
![Page 42: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/42.jpg)
Ruby on Rails - Web Development
![Page 43: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/43.jpg)
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.
![Page 44: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/44.jpg)
RAILS & MVC PATTERN
M - Model(Active Record)
V – View(Active View)
C – Controller(Active Controller)
![Page 45: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/45.jpg)
CONT..
![Page 46: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/46.jpg)
MODEL- ACTIVE RECORD
Provide access to Database table - Record CRUD(Create, Read, Update , Delete)
It define also Validation & Association
![Page 47: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/47.jpg)
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.
![Page 48: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/48.jpg)
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.
![Page 49: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/49.jpg)
RAILS DIRECTORY STRUCTURE
![Page 50: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/50.jpg)
SIMPLE APPLICATION
type rails name of application in plural
![Page 51: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/51.jpg)
CONT..
http://localhost:300
0
![Page 52: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/52.jpg)
CONT..
![Page 53: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/53.jpg)
CONT..
![Page 54: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/54.jpg)
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
![Page 55: Ruby -the wheel Technology](https://reader036.vdocument.in/reader036/viewer/2022062405/55532a1bb4c90575768b55d8/html5/thumbnails/55.jpg)
THANK YOU