Getting Started with Ruby

Venkat Subramaniam – [email protected] 1

What’s Ruby? • Ruby is an OO, dynamic, agile language – Everything’s an object • For example, try puts -1.abs – Derives strengths of Perl, Smalltalk, Python • Created by Matz in mid 90’s • Prevalent in Japan; recent buzz in the US

• It’s a lightweight language – Clean, Higher signal-to-noise ratio • There is no compiler to stand in your way • Quite flexible–you’ll see when you use it

Venkat Subramaniam – [email protected] 2 History • Created by Yukihiro Matsumoto (Matz) in 1993

• Slowly being accepted in the west

• Popularized by some key players in the industry

• Gaining strength in various applications – Ruby-On-Rails (ROR)

Venkat Subramaniam – [email protected] 3

Downloading Ruby •Ruby site – http://www.ruby-lang.org

• For windows, you may use one-click installer http://rubyinstaller.rubyforge.org

Venkat Subramaniam – [email protected] 4 Ruby Version • You can find the version of ruby you’re using by typing ruby –v

Venkat Subramaniam – [email protected] 5

Running Ruby • Run ruby and type commands

• Interactively using irb

• Save code to file and run it

• I’ll run it directly from notepad2

• Other tools and Plugins available as well

Venkat Subramaniam – [email protected] 6 IDEs • Comes with FreeRIDE IDE

•Mondrian IDE

• TextPad generally used on Mac

• Command line and Notepad(2) works great as well! – The following blog entry shows you how – http://tinyurl.com/as8z7

Venkat Subramaniam – [email protected] 7

Documentation… •ri

• RDoc at http://www.ruby-doc.org Venkat Subramaniam – [email protected] 8 Object-Oriented • Ruby treats almost everything as objects

• nil is an object (try: puts nil.methods) • Even classes are objects! – You use them like objects – These objects simply represent their class

Pizza is a const that references Pizza class object

Venkat Subramaniam – [email protected] 9

Less Clutter • Code less, do more

• Java:

GOJ

•Ruby

Venkat Subramaniam – [email protected] 10 Less Clutter • Clean language • Less noise • ; is not needed • Parenthesis are optional • Variables don’t have type specification • Last statement of a method returns automatically • You can even return multiple values!

Venkat Subramaniam – [email protected] 11

Variables • Dynamic typing

•Output:

Venkat Subramaniam – [email protected] 12 Types • Everything is an object

Venkat Subramaniam – [email protected] 13

Writing a function

Venkat Subramaniam – [email protected] 14 Another function

Returns an array Assigns elements of array to individual variables

Venkat Subramaniam – [email protected] 15

Ruby Conventions • Conventions are very important

• Sometimes convention simply makes code look better • At other times, it means something significant [you will learn some conventions the hard way ☺]

Venkat Subramaniam – [email protected] 16 Class/Method conventions • Class names, modules names, and constants start with upper case – SportsCar, ValueOfPI, DAYS_IN_WEEK • Methods and variables start with lowercase and use underscore – start_engine(), miles_driven • Instance variables have @ – @fuel_level • Class variables use double ats – @@suggested_pressure • Global variables use $ – $ozone Venkat Subramaniam – [email protected] 17

Method convention talks to you • You can figure out what a method is up to from its looks

Query method Doesn’t modify object Has side effect; mutates object

• Methods may end with an = – the method may appear as l-value

Venkat Subramaniam – [email protected] 18 Global and Predefined Variables •This is hideous • You may be setting some global variable and not know it (familiarize yourself) • Some predefs: $_, $0, $$, $&, $!, …

Venkat Subramaniam – [email protected] 19

"" vs '' (Double vs. Single Quotes) • '' is a simple string • Expressions within "" are evaluated

• Better to use ' if you don’t have expressions

Venkat Subramaniam – [email protected] 20 More on Strings

Venkat Subramaniam – [email protected] 21