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