SlideShare a Scribd company logo
RUBY CAN
HELP YOU
WITH ...
ANYTHING!
By Viacheslav Horbovskykh
AGENDA
History of Ruby
Main philosophy and tricks
How Ruby can help you in QA, DevOps,
Development
Ruby in numbers
Q&A
HISTORY
Creator, Yukihiro “Matz” Matsumoto,
blended parts of his favourite languages
(Perl, Smalltalk, Eiffel, Ada, and Lisp)
”Ruby is simple in appearance, but
is very complex inside, just like our
human body”
THE NAME "RUBY"
• The name "Ruby" originated during an online chat session between
Matsumoto and Keiju Ishitsuka on February 24, 1993. Initially two
names were proposed: "Coral" and "Ruby". Matsumoto later noted a
factor in choosing the name "Ruby" – it was the birthstone of one of
his colleagues.
FIRST PUBLICATION
• The first public release of Ruby 0.95 was announced on Japanese
domestic newsgroups on December 21, 1995. Subsequently, three
more versions of Ruby were released in two days. The release
coincided with the launch of the Japanese-language ruby-list mailing
list, which was the first mailing list for the new language.
VERSION LIST
Following the release of Ruby 0.95 in 1995, several stable versions of Ruby were released in the following years:
• Ruby 1.0: December 25, 1996
• In 1997, the first article about Ruby was published on the Web. In the same year, Matsumoto was hired by
netlab.jp to work on Ruby as a full-time developer.
• In 1998, the Ruby Application Archive was launched by Matsumoto, along with a simple English-language
homepage for Ruby.
• In 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language
outside Japan. In this same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented
Scripting Language Ruby
• Ruby 1.6: September 2000
• Ruby 1.8 was initially released August 2003
• Ruby 1.9 was released on Christmas Day in 2007
• Ruby 2.0 As of the official 2.0.0 release on February 24, 2013. It has been obsolete since February 22, 2016, and it
will no longer receive bug and security fixes.
• Ruby 2.1.0 was released on Christmas Day in 2013
• Ruby 2.2.0 was released on Christmas Day in 2014
• Ruby 2.3.0 was released on Christmas Day in 2015
• Ruby 2.4.0 was released on Christmas Day in 2016.
• Ruby 2.5.0 was released on Christmas Day in 2017
• Ruby 2.6.0 was released on Christmas Day in 2018
• Ruby 2.7.0 was released on Christmas Day in 2019
VERSION LIST
PHILOSPHY
The principles of Ruby device and programming on it are
sometimes highlighted in the term “Ruby Way”.
• Language is for man, not computer.
• Simple but not too simple.
• Principle of least astonishment (POLA), meaning that the
language should behave in such a way as to minimize confusion
for experienced users.
irb(main):001:0> "alphabet".upcase.concat("Soup")
=> "ALPHABETSoup"
PHILOSPHY
• Principle of flexibility: There are multiple ways to accomplish
the same thing, and even built-in commands can be changed.
# Version 1:
if 3>4
puts "the condition is true"
else
puts "the condition is false"
End
# Version 2:
puts 3>4 ? 'the condition is true' : 'the condition is false'
Here’s an Hello World code spinet in Ruby,
Python and Java.
• Ruby:
puts "Hello World"
• Python:
print("Hello World")
• Java:
public class Main {
public static void main(String[] args {
System.out.println("Hello World");
}
}
COMPARISON
OF
HELLO WORLD
< = Java
Python =>
Ruby =>
HOW RUBY
CAN HELP
YOU IN …
QA
Tools:
• Cucumber, Rspec,
Capybara
• Selenium WebDriver, Watir
• …
# run options: rspec ruby_file.rb (require before launch gems: webdriver, rspec)
require 'webdrivers'
require 'rspec'
search_field = "//input[@type='text']"
prices = "//span[@class='s-item__price']"
describe "EBAY items" do
it "Sum of 10 ebay items should be more than 1000" do
driver = Selenium::WebDriver.for :chrome
driver.get "http://ebay.com"
element = driver.find_element(xpath: search_field)
element.send_keys "Astronomical Telescope"
element.submit
arr_prices = []
items_prices = driver.find_elements(xpath: prices)
items = items_prices.slice(0, 10)
# puts items
items.each do |item|
arr_prices.push(item.text.delete('$').to_f)
end
# puts arr_prices.sum
sum = arr_prices.sum
expect(sum).to be > 1000
end
end
DEVOPS
Tools:
• Pure ruby
• File, RubyXL, Dir, …
• Brackets ``
• …
# Writing to file
File.open('/some/file') do |file|
file.puts 'first line'
file.puts 'second line'
end
# Change dir
Dir.chdir('/some/place') do |dir|
do_something_in_some_place(dir)
end
# Reading from file
File.foreach('/some/file') do |line|
puts "Line read: #{line}"
do_something(line)
end
DEVELOPMENT
Tools:
• Ruby on Rails
• Sinatra
• Databases plugins
• …
require 'rubygems'
require 'sinatra'
require 'json'
# Home page
class ExampleApp < Sinatra::Base
path = __dir__
get '/' do
# Return index.html
File.read(File.join(path, 'public', 'index.html'))
end
# Error 404
get '/error404/?' do
# Return error 404.html
status 404
File.read(File.join(path, 'public', '404.html'))
end
end
webrick_options = {
Host: '0.0.0.0',
Port: '8080'
}
Rack::Handler::WEBrick.run ExampleApp, webrick_options
ICEBERG OF RUBY
• MRI interpreter
• Global interpreter lock (GIL)
• Multi Threads
• Multi Inheritance
• JRuby, IronRuby
• Garbage collector
• RVM, rbenv
• Bundler
• …
BIG RUBY PROJECTS
Ruby in
Numbers
Q & A

More Related Content

Similar to How to use Ruby in QA, DevOps, Development. Ruby lang Intro (20)

DOCX
Page List & Sample Material (Repaired)
Muhammad Haseeb Shahid
 
KEY
Learn Ruby 2011 - Session 1
James Thompson
 
PDF
Ruby tutorial
knoppix
 
ZIP
Meta Programming in Ruby - Code Camp 2010
ssoroka
 
PDF
Ruby an overall approach
Felipe Schmitt
 
PDF
Introduction to Ruby & Modern Programming
Christos Sotirelis
 
ODP
Ruby
Aizat Faiz
 
PPTX
Ruby Programming Language - Introduction
Kwangshin Oh
 
PDF
Ruby Presentation
platico_dev
 
DOC
Pré Descobrimento Do Brasil
ecsette
 
PDF
Programming language Ruby and the Rails framework
Radek Mika
 
PDF
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Michael Kimathi
 
PDF
Ebay News 2000 10 19 Earnings
QuarterlyEarningsReports
 
PDF
P4 P Update January 2009
vsainteluce
 
PDF
Ebay News 2001 4 19 Earnings
QuarterlyEarningsReports
 
PDF
What can Ruby learn from Python (and vice versa)?
Reuven Lerner
 
PPT
Workin ontherailsroad
Jim Jones
 
PPT
WorkinOnTheRailsRoad
webuploader
 
KEY
Introduction to Ruby
Mark Menard
 
PPTX
Ruby basics
Tushar Pal
 
Page List & Sample Material (Repaired)
Muhammad Haseeb Shahid
 
Learn Ruby 2011 - Session 1
James Thompson
 
Ruby tutorial
knoppix
 
Meta Programming in Ruby - Code Camp 2010
ssoroka
 
Ruby an overall approach
Felipe Schmitt
 
Introduction to Ruby & Modern Programming
Christos Sotirelis
 
Ruby Programming Language - Introduction
Kwangshin Oh
 
Ruby Presentation
platico_dev
 
Pré Descobrimento Do Brasil
ecsette
 
Programming language Ruby and the Rails framework
Radek Mika
 
Opal,The Journey from Javascript to Ruby at Ruby Conf Kenya 2017 by Bozhidar ...
Michael Kimathi
 
Ebay News 2000 10 19 Earnings
QuarterlyEarningsReports
 
P4 P Update January 2009
vsainteluce
 
Ebay News 2001 4 19 Earnings
QuarterlyEarningsReports
 
What can Ruby learn from Python (and vice versa)?
Reuven Lerner
 
Workin ontherailsroad
Jim Jones
 
WorkinOnTheRailsRoad
webuploader
 
Introduction to Ruby
Mark Menard
 
Ruby basics
Tushar Pal
 

Recently uploaded (20)

PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Digital Circuits, important subject in CS
contactparinay1
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Ad

How to use Ruby in QA, DevOps, Development. Ruby lang Intro

  • 1. RUBY CAN HELP YOU WITH ... ANYTHING! By Viacheslav Horbovskykh
  • 2. AGENDA History of Ruby Main philosophy and tricks How Ruby can help you in QA, DevOps, Development Ruby in numbers Q&A
  • 3. HISTORY Creator, Yukihiro “Matz” Matsumoto, blended parts of his favourite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) ”Ruby is simple in appearance, but is very complex inside, just like our human body”
  • 4. THE NAME "RUBY" • The name "Ruby" originated during an online chat session between Matsumoto and Keiju Ishitsuka on February 24, 1993. Initially two names were proposed: "Coral" and "Ruby". Matsumoto later noted a factor in choosing the name "Ruby" – it was the birthstone of one of his colleagues. FIRST PUBLICATION • The first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21, 1995. Subsequently, three more versions of Ruby were released in two days. The release coincided with the launch of the Japanese-language ruby-list mailing list, which was the first mailing list for the new language.
  • 5. VERSION LIST Following the release of Ruby 0.95 in 1995, several stable versions of Ruby were released in the following years: • Ruby 1.0: December 25, 1996 • In 1997, the first article about Ruby was published on the Web. In the same year, Matsumoto was hired by netlab.jp to work on Ruby as a full-time developer. • In 1998, the Ruby Application Archive was launched by Matsumoto, along with a simple English-language homepage for Ruby. • In 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language outside Japan. In this same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented Scripting Language Ruby • Ruby 1.6: September 2000 • Ruby 1.8 was initially released August 2003 • Ruby 1.9 was released on Christmas Day in 2007 • Ruby 2.0 As of the official 2.0.0 release on February 24, 2013. It has been obsolete since February 22, 2016, and it will no longer receive bug and security fixes. • Ruby 2.1.0 was released on Christmas Day in 2013 • Ruby 2.2.0 was released on Christmas Day in 2014 • Ruby 2.3.0 was released on Christmas Day in 2015 • Ruby 2.4.0 was released on Christmas Day in 2016. • Ruby 2.5.0 was released on Christmas Day in 2017 • Ruby 2.6.0 was released on Christmas Day in 2018 • Ruby 2.7.0 was released on Christmas Day in 2019
  • 7. PHILOSPHY The principles of Ruby device and programming on it are sometimes highlighted in the term “Ruby Way”. • Language is for man, not computer. • Simple but not too simple. • Principle of least astonishment (POLA), meaning that the language should behave in such a way as to minimize confusion for experienced users. irb(main):001:0> "alphabet".upcase.concat("Soup") => "ALPHABETSoup"
  • 8. PHILOSPHY • Principle of flexibility: There are multiple ways to accomplish the same thing, and even built-in commands can be changed. # Version 1: if 3>4 puts "the condition is true" else puts "the condition is false" End # Version 2: puts 3>4 ? 'the condition is true' : 'the condition is false'
  • 9. Here’s an Hello World code spinet in Ruby, Python and Java. • Ruby: puts "Hello World" • Python: print("Hello World") • Java: public class Main { public static void main(String[] args { System.out.println("Hello World"); } } COMPARISON OF HELLO WORLD
  • 14. QA Tools: • Cucumber, Rspec, Capybara • Selenium WebDriver, Watir • … # run options: rspec ruby_file.rb (require before launch gems: webdriver, rspec) require 'webdrivers' require 'rspec' search_field = "//input[@type='text']" prices = "//span[@class='s-item__price']" describe "EBAY items" do it "Sum of 10 ebay items should be more than 1000" do driver = Selenium::WebDriver.for :chrome driver.get "http://ebay.com" element = driver.find_element(xpath: search_field) element.send_keys "Astronomical Telescope" element.submit arr_prices = [] items_prices = driver.find_elements(xpath: prices) items = items_prices.slice(0, 10) # puts items items.each do |item| arr_prices.push(item.text.delete('$').to_f) end # puts arr_prices.sum sum = arr_prices.sum expect(sum).to be > 1000 end end
  • 15. DEVOPS Tools: • Pure ruby • File, RubyXL, Dir, … • Brackets `` • … # Writing to file File.open('/some/file') do |file| file.puts 'first line' file.puts 'second line' end # Change dir Dir.chdir('/some/place') do |dir| do_something_in_some_place(dir) end # Reading from file File.foreach('/some/file') do |line| puts "Line read: #{line}" do_something(line) end
  • 16. DEVELOPMENT Tools: • Ruby on Rails • Sinatra • Databases plugins • … require 'rubygems' require 'sinatra' require 'json' # Home page class ExampleApp < Sinatra::Base path = __dir__ get '/' do # Return index.html File.read(File.join(path, 'public', 'index.html')) end # Error 404 get '/error404/?' do # Return error 404.html status 404 File.read(File.join(path, 'public', '404.html')) end end webrick_options = { Host: '0.0.0.0', Port: '8080' } Rack::Handler::WEBrick.run ExampleApp, webrick_options
  • 17. ICEBERG OF RUBY • MRI interpreter • Global interpreter lock (GIL) • Multi Threads • Multi Inheritance • JRuby, IronRuby • Garbage collector • RVM, rbenv • Bundler • …
  • 20. Q & A