freeCodeCamp/guide/english/ruby/index.md

6.9 KiB
Raw Blame History

title
Ruby

What is Ruby?

Ruby was created by Yukihiro "Matz" Matsumoto and is an open source, dynamic and interpreted scripting language for quick and easy object-oriented programming. Which means:

It's also known to have one of the largest and friendliest communities among programming languages.

  • Ability to make operating system calls directly
  • Immediate feedback during development
  • Variable declarations are unnecessary
  • Memory management is automatic
  • Everything is an object
  • Has "mixin" functionality by module
  • Iterators and closures

If you are unfamiliar with some of the concepts above, read on, and don't worry. Ruby focus on simplicity and productivity with an elegant syntax that is natural to read and easy to write, like:

# Quick example of Ruby with Object Oriented Programming
class Greeter
  def initialize(name)
    @name = name.capitalize
  end

  def salute
    puts "Hello #{@name}!"
  end
end

# Create a new object
g = Greeter.new("world")

# Output "Hello World!"
g.salute

Version

The current stable version is 2.5.1.

Installation

Mac OS X and many Linux distributions come pre-installed with Ruby. To check if Ruby is pre-installed in your system, just run ruby -v on your shell. There are several ways to install Ruby:

  • When you are on a UNIX-like operating system, using your systems package manager is the easiest way of getting started. However, the packaged Ruby version usually is not the newest one.
  • Installers can be used to install a specific or multiple Ruby versions. There is also an installer for Windows.
  • Managers help you to switch between multiple Ruby installations on your system.
  • And finally, you can also build Ruby from source.

To know about how to install Ruby through package managers, installers and source, click here. RVM (Ruby Version Manager) and rbenv are the most popular Ruby managers to manage multiple Rubies. If you get stuck anywhere, don't worry, just head over to our Gitter chat room and ask us anything.

IRB

IRB stands for Interactive Ruby Shell. The abbreviation irb comes from the fact that the filename extension for Ruby is ".rb", although interactive Ruby files do not have an extension of ".irb". The program is launched from a command line and allows the execution of Ruby commands with an immediate response, experimenting in real-time. It features command history, line editing capabilities, and job control, and is able to communicate directly as a shell script over the Internet and interact with a live server. It was developed by Keiju Ishitsuka.

    irb
    2.3.0 :001 > print "Hello World"
    Hello World! => nil

Ruby Interpreter

The Ruby interpreter is what is used to run Ruby scripts. If it is available and in Unix shells search path makes it possible to start it by typing the command ruby followed by the script name will invoke the interpreter and run the script.

hello_campers.rb

    if 'welcome' == 'welcome'
        print('Hello campers!')
    end

From command-line:

    $ ruby hello_campers.rb
    Hello campers!

Documentation

Ruby is well documented. These docs include tutorials, guides, references and meta information for language.
Another important resouce for documentation is Ruby Doc. You should visit this link to know more about Ruby style guide, written by developers of AirBnB.

A recommended read for beginners in Ruby is Why's (Poignant) Guide to Ruby This book is unusual among programming books. With quite a lot of strange humor and narrative side tracks which are sometimes completely unrelated to the topic, this one manages to keep the readers entertained while they learn Ruby basics.

Debugging

Inline print statements can be used for simple debugging:

    print some_variable # prints to console

... often the quickest way to debug a program is to add a few print statements to the source: the fast edit-test-debug cycle makes this simple approach very effective.

Ruby also includes more powerful tools for debugging, such as:

Hello World!

Going back to the docs, we can read about the print method, one of the built-in methods of the the Kernel module.

    print(obj, ...)  nil

Prints each object to $stdout. Objects that arent strings will be converted by calling their to_s method. The return value of print is nil. So when you run print "Hello World! in your IRB. The output is:

    2.3.0 :001 > print "Hello World!"
    Hello World!
     => nil

Frameworks(gems)

Ruby has several frameworks(gems) for quickly scaffolding applications. The most popular by far is Rails which was initially released in 2004. Other frameworks(gems) for Ruby include Sinatra, Lotus, and Volt. Each of these options has their pros and cons for development and cater to a variety needs.

Ruby Framework for mobile development

To write cross-platform native apps in Ruby, RUBY MOTION is used to develop cross-platform native apps for iOS, Android and OS X using the Ruby programming langauge. More resources here: http://www.rubymotion.com/

After learning Ruby

With a good grasp on Ruby you can contribute to open source projects, or apply to some big companies! Many sites you may know are built on Ruby: Basecamp, Airbnb, Bleacher Report, Fab.com, Scribd, Groupon, Gumroad, Hulu, Kickstarter, Pitchfork, Sendgrid, SoundCloud, Square, Yammer, Crunchbase, SlideShare, Funny or Die, Zendesk, Github, and Shopify, just to name a few. Needless to say, there are plenty of options!

A lot of startups need people who have skill in Ruby on Rails. With less developers trying to learn Ruby, you may find a good number of openings for Ruby developers!