2. “
”
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.
Yukihiro Matsumoto Google Tech Talk(2008)
•Created in 1993 by Yukihiro Matsumoto
•Initially 2 names were proposed :“Coral” and “Ruby”
•His aim was to create a programming language easy-to-use
3. DYNAMIC
“Dynamic programming language is a term used
in computer science to describe a class of high-level
programming languages which, at runtime, execute
many common programming behaviors that static
programming languages perform during compilation.”
wikipedia.com
Ruby is a dynamic programming language
4. OBJECT-ORIENTED
Ruby is pure object-oriented language and everything appears to
Ruby as an object
Even a class itself is an object that is an instance of the Class class
Ruby is based on the concept of “objects” , classes , attributes and
methods.
5. GENERAL PURPOSE
Ruby is a programming language designed to be used for
writing software in a wide variety of application domains like:
• Server-Side(Ruby-on-Rails)
• Web Servers
• Common GUI Applications
• Low-Level systems
6. FAMOUS APPLICATIONS WRITTEN IN
RUBY
Simulations
NASA Langley Research Center uses Ruby to conduct simulations.
3D Modeling
Google SketchUp is a 3D modeling application that uses Ruby for its macro scripting API.
Robotics
At MORPHA project, Ruby was used to implemented the reactive control part for the
Siemens service robot.
Web Applications Implemented in Rails
7. VERSIONS
• Ruby 1.0: December1996
• Ruby 1.2: December 1998
• Ruby 1.4: August 1999
• Ruby 1.6: September 2000
• Ruby 1.8: August 2003
• Ruby 1.9: December 2007
• Ruby 2.1: December 2013
• Ruby 2.2: December 2014
9. RUBY GEMS
As most programming languages, Ruby offers a wide set of third-
party libraries.
Most of them are released in the form of a gem
RubyGems is a package manager for the Ruby programming
language that provides a standard format for distributing Ruby
programs and libraries
10. RUBY RVM
RVM(Ruby Version Manager) is a command-line tool which allows
you to easily install, manage, and work with multiple ruby
environments from interpreters to sets of gems.
RVM is a programmer’s helping hand for :
1. Production
RVM lets you deploy each project with its own completely self-
contained and dedicated environment, from the specific version of
ruby, all the way down to the precise set of required gems to run
your application. With RVM, NO OTHER GEMS than those required
are installed. Efficiency when working on complex applications
11. RUBY RVM
2. Testing
RVM enables you to easily test both upgrade and escape paths
very easily and consistently. With RVM, you can run a test suite, rake
tasks, benchmarks and gem commands against multiple ruby
versions at the same time.
3. Gem Management
RVM has an extremely flexible gem management system called
Named Gem Sets. RVM's 'gemsets' make managing gems across
multiple versions of Ruby a non-issue.
Note : RVM is for Ruby applications, *not just for Rails*! Any Ruby
based application will benefit from your use of RVM.
12. RVM INSTALLATION
Ubuntu
1. Open Terminal
3) curl –sSL https://get.rvm.io | bash
4) Done!
Windows
RVM is not developed for Windows. An alternative is pik
(https://github.com/vertiginous/pik)
13. IRB
Interactive Ruby Shell (IRB or irb) is a REPL for programming in Ruby. The
program is launched from a command line and allows the execution of
Ruby commands with immediate response, experimenting in real-time.
irb is executed using the “irb” command.
Use “exit” to exit irb
14. IRB
We can use irb in order to evaluate a variety of
expressions
You can also invoke a single program with irb
15. RUBY IDE
For Ruby Developing I personally use and recommend RubyMine (Developed by
JetBrains)
RubyMine is free for Students
RubyMine Installation
1. https://www.jetbrains.com/ruby
2. Download and install RubyMine
3. Create JetBrains Account
4. Apply for Student licence in www.jetbrains.com/student
5. Open RubyMine and login using your account
16. IN GENERAL
• Ruby files use the suffix .rb
• Comments start with #
• Multiple line comments use =begin , =end
• nil(null in other programming languages) means that the
object is an instance of the Nil Class
• Blocks end using the “end” statement
• Variables dynamically change their type
17. NAMING
Ruby has some strange naming conventions
1. Local varibles, method’s parameters and method’s
names are written in lowercase
2. Constants are written in capital letters
3. Global variables are prefixed with the dollar sign ($)
4. Field names are prefixed with the “at” sign "@"
5. Class names are prefixed with the “double at” sign "@@"
18. CLASSES & OBJECTS
Class ClassName
attr_accessor :var1,:var2
<methods>
End
Constructors are named “initialize(param1,param2…)”
attr_accessor is used as getter,setter
Inheritance is a thing
Multiple Inheritance is not
objectTitle = ClassName.new(param1,param2…)
20. STRING
CHARACTERISTICS
• “n” is used as line breaker
• If we want to use a variable name inside a string we just
add #{variable_name}
• Alternatively, we can use the + operator in order to unite 2
or more strings
• Double quote vs Single quotes : Double quotes allow you
to do string interpolation
21. ARRAYS
• Arrays, like variables, dont need initialization
• temp = Array.new(10)
• puts temp.size or puts temp.length
• We can save variables of different type
• Values are saved as A = ['A','B','C'] or A[0] = 1 etc
SHORTCUT %w
%w is used in order to initialize arrays alternatively,
A = %w{ A B C }
22. HASHES
• To initialize Hashes we use curly braces instead of braces
• In order to initialize a map :
"key => value"
Note : keys are unique, values are not
• temp = Hash.new
Hash Display
temp[:key]
If key does not exist, nil is returned
23. CONDITIONAL
STRUCTURES
• main body does not require curly braces { }
• Condition does not require parentheses
• If main body contains only one command, the command
can go before the condition
• Conditional structures are :
if-elsif-else,
Case-when (like switch-case)
unless-else
24. LOOPS
• main body does not require curly braces { }
• Condition does not require parentheses
• Known loops are :
1. while[condition]-end, begin-while[condition]
2. begin – end until [condition]
3. for i in 0…j
next : is used in order to pass to the next value
redo : restarts the iteration of the most internal loop,
without checking loop condition.
If retry appears in rescue clause of begin expression,
restart from the beginning of the 1begin body.
25. CODE BLOCKS
Ruby includes a pretty cool feature : The Code Blocks
• We can call a method which has the same name but
different body by using the yield command
• Any code surrounded by curly braces is a block
• The calling can include arguments called
Block arguments
{|arg1,arg2| code_including_args}
26. CODE BLOCKS
Yeah…ok but whats the usage?
1. To keep things concise and understandable
2. To create more elegant code
3. To iterate lists (especially in Rails)
27. ITERATORS
.each method for arrays & hashes (block)
times & upto(-number-) for numbers
Iterators can be used as blocks
28. I/O
2 main ways to output
1. puts (like println in Java)
2. printf (Like in C/C++)
gets is the main way to input data
29. EXCEPTIONS
Are handled using begin-rescue
Some known Exception subclasses are:
NoMemoryError
ScriptError
StandardError
SystemExit
SystemStackError
30. WHY RUBY?
1. Ruby allows the programmer to do things fast (less code – but
takes time to learn). That’s why Ruby programmers are happy
2. Open-Source (Hundreds of recourses – everything is free! –
gems usage)
3. Everything is free! Gems usage save time and money
4. Ruby On Rails (Rails conventions)