Welcome to Chennai-rb

This gives you a whirlwind tour what the Ruby programming language is like, and what the Chennai-rb group is all about.



  • A programming language
  • Natural to read, simple to write
  • Open source
  • Popular
  • Fun

  • Is dynamic

  • Has REPL

  • Has a rich standard library

  • Has lambdas and blocks

  • Has gems (mostly open source libraries) 

  • Has a vibrant community

Ruby examples

  # The famous Hello World Program is trivial in Ruby.
  # None of the superfluous:
  # * A "main" method
  # * Newline
  # * Semicolons

  puts "Hello World!"

Ruby examples

  cities  = ['London', 'Oslo', 'Paris', 'Amsterdam', 'Berlin']
  visited = ['Berlin', 'Oslo']

  puts "Yet to visit :", cities - visited

Ruby is simple

  • Simplicity is the goal
  • Code should be easy to write and read
  • No ceremony, no unnecessary terms or structures or keywords

Ruby is fun

  • Programming becomes interesting
  • Everyone can program - getting started is easy
  • Solve the problem at hand. Tool/language should get out of the way

Ruby has an REPL

  • REPL (Read-eval-print loop) is like a command line interface to the language.
  • Ruby's REPL is called IRB
  • We can type our program line by line in IRB, and see how it executes
  • Makes it easy to try out new libraries, code snippets. And is useful in debugging too



Ruby is dynamic

  • Dynamic - no need to declare data-types
  • Helps keep things simple while approaching new problems, if we are not sure about the data-types
  • Helps us focus on the algorithm rather than datatypes

Ruby is dynamic

  # Assume 'meaning_of_life' is a library function 
  # It can return a number or a string
  # So x can take a number or a string

  x = meaning_of_life()

  puts 'Take lite da'  if x == 'Be cool'
  puts 'Chance-illa'   if x == 42
  • Did you notice the if clause
  • Ruby allows us to write code that reads better

Ruby has a rich standard library

  • Many facilities for string manipulation and array processing are available right out of the box
  • Some other useful libraries are:
    • Date and Time
    • Regexp
    • Net/Http for Http
    • Socket for socket IO
    • Thread for multi-threading
    • Rake for build tooling
    • Json for Json
    • Cmath for maths

Ruby standard library

  # Sort an array

  arr = [12, 5, 6, 8, 1, 33]
  arr.sort # => [1, 5, 6, 8, 12, 33]

  # Reverse it
  arr.reverse  # => [33, 1, 8, 6, 5, 12]

  # Access it from the tail
  arr[-1]   # => 33

  # Add and subtract
  arr + [1, 2, 3] # => [12, 5, 6, 8, 1, 33, 1, 2, 3]
  arr - [1, 2, 3] # => [12, 5, 6, 8, 33]

Examples with Array

Ruby standard library

  # Joining the array

  ['abc', 'xyz'].join('-')  # => 'abc-xyz'

  # Get all permutations
  [1, 2, 3].permutation.to_a  #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

  # Rotate, shift and shuffle

  [1, 2, 3].rotate  #=> [2, 3, 1]
  [1, 2, 3].shift   #=> 1
  [1, 2, 3].shuffle #=> [2, 1, 3]

  # Slice

  arr = [ "a", "b", "c", "d", "e" ]
  arr[1..3]  # => ["b", "c", "d"]

  # Remove duplicates

  [1, 2, 3, 1, 2, nil].uniq  # => [1, 2, 3, nil]

Examples with Array

Ruby standard library

  # String concatenation

  "abc" + "123"  #=> "abc123"

  # String comparison

  "abc" == "abc"  # => true
  "abc" == "abc1" # => false

  # Convert to array
  "abc".chars  #=> ["a", "b", "c"]

  # Split and slice

  "hello world".split(" ") #=> ["hello", "world"]
  "hello world"[1..4]      #=> "ello"

  # Change case, Strip, reverse

  "hello".upcase  #=> "HELLO"
  " hello ".strip #=> "hello"
  "hello".reverse #=> "olleh"

Examples with String

Ruby standard library

Try the examples in IRB.

Its interesting and fun

Ruby lambdas and blocks

  • Ruby has the ability to treat code as data.
  • This means we can write chunks of code that can be treated like any ordinary Ruby object - can be assigned to a variable, passed around as method arguments etc, before getting executed eventually
  • The chunks of code created this way are called lambda.
  • An interesting property of lambdas is that they carry their environment with them (they are closures)
  • This enables the functional programming paradigm to be used in Ruby

Ruby lambdas and blocks

An example:

 my_env = "Hello"
 my_code = lambda {
   puts "A lambda"
   puts "Code between the braces can be treated like data"
   puts "The variable my_code has the reference to it"
   puts "It can be passed around and invoked when needed"
   puts "It also carries its environment within itself: the my_env variable"
   puts my_env

 foo my_code

 ## somewhere in some other file
 def foo(given_code)
  puts "Given code starts"
  puts "Given code ends"

Ruby lambdas and blocks

  • Ruby has a feature similar to lambdas called blocks
  • A block is a chunk of code, like a lambda. It also carries its environment with itself (closure), like lambdas. The only restriction is that it can be invoked just once.
  • Blocks are invoked using the yield keyword.

 # foo method takes the block
 def foo # A block can be passed without any arguments
   puts "Given code starts"
   yield # This invokes the given block
   puts "Given code ends"

 # And somewhere else
 my_env = "HI"
 foo {
   puts "This is the block: the code within curly braces"
   puts "This will get executed within the foo method"
   puts "And will know the variable my_env too"
   puts my_env

Ruby Gems

  • Libraries that are not included in standard ruby installation are called gems
  • We need to install them separately
    • gem install 'my-gem' (needs internet connection)
  • Ruby community has created thousands of gems. For nearly every task we need to write code for, there is a gem.
  • Most gems are open source and are available for inspection/ improvement

Ruby Gems: Rails

  • Ruby on Rails is also a Ruby gem
  • Ruby on Rails is a popular library and framework for web development.
  • It is current one among the best options to develop database backed web applications
  • It embraces the Ruby philosophy of simplicity and elegance, and adds some of its own
  • Rails aims at enhanced developer productivity using ideas like "convention over configuration" and "don't repeat yourself" (DRY)

Ruby Gems: Rails

  • Developer productivity mean we can execute in weeks the same projects that take months with enterprise technologies (J2EE, Dot.Net) 
  • Rails is open source, just like Ruby. Ruby communities support and encourage the open source movement

Ruby Community

  • Ruby supports and promotes the idea of community
  • This means that people involved in the Ruby programming business - programmers, entrepreneurs, students should meet and interact. 
  • Such interaction happens  both offline and online
  • People share knowledge and opinions, discuss issues with current technology and collaborate towards improvement
  • There are several Ruby conferences for the purpose - dozens of them happen over the year. There are three in India right now.
  • There are also city level user groups. They generally meet monthly, and conduct other events like workshops and hackathons. Chennai has one too.

Ruby Community in Chennai

  • There is an active Ruby community in Chennai
  • We meet once every month, and sometimes conduct workshops too
  • The aim of the community is to help each other by sharing knowledge and opportunities. Its the right place to be for improving your programming skills and finding jobs/internships
  • We discuss online using Slack. We have a mailing list, a meetup.com page and a Twitter too - for announcements. All the details are available on the website

Ruby Community in Chennai

A picture from the recent meet-up

Ruby Community in Chennai

  • You are most welcome to join the group. Just visit one of the meetups or join the Slack chat
  • Like the worldwide Ruby community, we believe in being a friendly and safe place. No one is allowed to be disrespectful to others - especially new-comers and students
  • To ensure that it is comfortable for women, we have zero tolerance against sexism. 
  • We also love polyglotism - this means that our discussions are not restricted to Ruby alone. We talk a lot about Javascript and Clojure and Docker and many other technologies

Ruby Resources


Chennai-rb links

Created by Abhishek Yadav (h6165) . Freely distributable without change in original content. Copies must hold this notice.  

Brand and project names are properties of their respective owners.


By Abhishek Yadav


Introduction to Ruby and Chennai.rb. Created for Software Freedom Day 2015

  • 1,183