SlideShare a Scribd company logo
An Introduction to
Ruby and Rails
Matthew Bohnsack
Wannabe Rubyist
November 9th 2005
Outline
   What is Ruby and why should I care?
   What is Rails and why should I care?
   Two must-have tools for Ruby development
   Major Ruby features (the language in a nutshell)
   Rails overview
   Where to go for more information
   Questions / Hacking


November 9th 2005   An Introduction to Ruby and Rails   2
What is Ruby? Why should I care?
   What:
      The Wikipedia answer is here.
      Created/lead by Matz (Japanese)
      Open Source interpreted scripting language, like Perl, Python,
       Tcl, etc., but focused on being very object oriented, expressive,
       and bringing joy to programming.
      Principle of least surprise
   Why:
      Productivity ideas presented in Ousterhout’s 1998 paper coming
       to very serious critical mass (and beyond)
      Learn a new language to learn new ways of thinking about code
       in any language (e.g., blocks and iterators)
      Joy!



November 9th 2005         An Introduction to Ruby and Rails                3
What is Rails? Why should I care?
   What:
      Web Framework that makes building database-driven MVC-oriented web apps
       easy through a template engine, ORM (ActiveRecord) and other best practices,
       such as test driven development, deployment tools, patterns, etc.
      Much less complicated than J2EE solutions, but perhaps more so than PHP or
       Perl in cgi-bin.
      Copy cats are being created in other languages:
              Python (TurboGears)
              Perl (Maypole)
        http://rubyonrails.org/ + book + online screencasts + online docs & tutorials
   Why:
        I’ve been watching the world of web development since ~ 1995, and I’ve never
         seen anything like Rails in terms of buzz, momentum, adoption rate, etc.




November 9th 2005                    An Introduction to Ruby and Rails                   4
Must have tool #1: irb
                                                     # ~/.irbrc

   Interactive ruby console:                        require 'irb/completion'
                                                     use_readline=true
      Experimenton the fly     auto_indent_mode=true

      Tab complete object methods
     …




November 9th 2005    An Introduction to Ruby and Rails                          5
Must have tool #2: ri
   Console-based Ruby doc tool




November 9th 2005   An Introduction to Ruby and Rails   6
Ruby in a nutshell – irb sessions
follow
   Like all interpreted scripting languages, you can
    put code into a file, chmod +x, then just execute
    it.




   But, we’ll mostly use irb sessions in this
    presentation…

November 9th 2005    An Introduction to Ruby and Rails   7
Ruby in a nutshell – objects are
everywhere
   Some languages have built-in types that aren’t
    objects. Not so with Ruby. Everything’s an
    object:




November 9th 2005   An Introduction to Ruby and Rails   8
Ruby in a nutshell – objects have
methods




      Bang on the tab key in irb to see the methods that are available for
      each object.


November 9th 2005            An Introduction to Ruby and Rails               9
Ruby in a nutshell – Variables
   Local variables - start with lower case:
      foo
      bar
   Global variables - start with dollar sign:
      $foo
      $bar
   Constants and Classes – start with capital letter:
      CONSTANT
      Class
   Instance variables – start with at sign:
      @foo
      @bar
   Class variables – start with double at sign:
      @@foo
      @@bar




November 9th 2005              An Introduction to Ruby and Rails   10
Ruby in a nutshell – Arrays




November 9th 2005   An Introduction to Ruby and Rails   11
Ruby in a nutshell – Hashes




November 9th 2005   An Introduction to Ruby and Rails   12
Ruby in a nutshell – Symbols
   Starts with a ‘:’
   Only one copy of a symbol kept in memory




November 9th 2005        An Introduction to Ruby and Rails   13
Ruby in a nutshell – Blocks & Iterators




November 9th 2005   An Introduction to Ruby and Rails   14
Ruby in a nutshell – It’s easy to build
classes




November 9th 2005   An Introduction to Ruby and Rails   15
Ruby in a nutshell – It’s fun to play with
classes (like the one we just made)




November 9th 2005   An Introduction to Ruby and Rails   16
Ruby in a nutshell – Classes are open
   Example shown here uses our Hacker
    class, but what happens when the whole
    language is open?




November 9th 2005   An Introduction to Ruby and Rails   17
Ruby in a nutshell – Other notes on
Classes
   Ruby only has single inheritance. This
    makes things simpler, but mix-ins provide
    much of multiple inheritance’s benefit,
    without the hassle.




November 9th 2005   An Introduction to Ruby and Rails   18
Ruby in a nutshell – a few gotchas
   Despite the principle of least surprise:
      Zero         isn’t false:




      No      increment operator (foo++). Instead use:
              foo += 1
              foo = foo + 1


November 9th 2005                  An Introduction to Ruby and Rails   19
Ruby in a nutshell – RubyGems

 CPAN for Ruby?
  http://docs.rubygems.org/
 Examples:
        gem list
        gem install redcloth --version ">= 3.0.0"
     …
   Using gems in your program:
      require ‘rubygems’
      require ‘some_gem’

November 9th 2005      An Introduction to Ruby and Rails   20
Want to learn more Ruby?
   Excellent, simple, beginner’s tutorial:
      http://www.math.umd.edu/~dcarrera/ruby/0.3/index.html
   Other stuff at end of talk
   Start hacking




November 9th 2005        An Introduction to Ruby and Rails     21
Quick Rails Demo – Build a TODO
list application in 5 minutes
   Define database
   rails todo
   cd todo
   Edit config/database.yml
   ./script/generate model Todo
   ./script/generate scaffold todo
   Look at scaffolding
   ./script/server –b www.bohnsack.com
   Add due_date field, regenerate scaffolding, and check the results
   ./script/console




November 9th 2005         An Introduction to Ruby and Rails             22
Where to go for more information
   Books:




   Online material:
        First edition of Pickaxe online for free
        http://www.ruby-doc.org/
        why’s (poignant) guide to Ruby
        http://rubyonrails.org/
        Rails screencast(s)
        Planet Ruby on Rails




November 9th 2005                 An Introduction to Ruby and Rails   23
The End / Questions




November 9th 2005   An Introduction to Ruby and Rails   24
Ad

More Related Content

What's hot (19)

TypeProf for IDE: Enrich Development Experience without Annotations
TypeProf for IDE: Enrich Development Experience without AnnotationsTypeProf for IDE: Enrich Development Experience without Annotations
TypeProf for IDE: Enrich Development Experience without Annotations
mametter
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
 
Iron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NETIron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NET
Kristian Kristensen
 
Ruby Programming Language - Introduction
Ruby Programming Language - IntroductionRuby Programming Language - Introduction
Ruby Programming Language - Introduction
Kwangshin Oh
 
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
mametter
 
MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?
Joshua Ballanco
 
Kotlin from-scratch
Kotlin from-scratchKotlin from-scratch
Kotlin from-scratch
Franco Lombardo
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
Ricardo Sanchez
 
Ruby Loves Dot Net
Ruby Loves Dot NetRuby Loves Dot Net
Ruby Loves Dot Net
Ivan Porto Carrero
 
Ruby formatters
Ruby formattersRuby formatters
Ruby formatters
Visuality
 
Enjoy Ruby Programming in IDE and TypeProf
Enjoy Ruby Programming in IDE and TypeProfEnjoy Ruby Programming in IDE and TypeProf
Enjoy Ruby Programming in IDE and TypeProf
mametter
 
Bldr: A Minimalist JSON Templating DSL
Bldr: A Minimalist JSON Templating DSLBldr: A Minimalist JSON Templating DSL
Bldr: A Minimalist JSON Templating DSL
Alex Sharp
 
Special Subject 1+2: RoR 2
Special Subject 1+2: RoR 2Special Subject 1+2: RoR 2
Special Subject 1+2: RoR 2
Stefan Fodor
 
Crystal
CrystalCrystal
Crystal
Kamil Lelonek
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
tutorialsruby
 
Sharing (or stealing) the jewels of python with big data & the jvm (1)
Sharing (or stealing) the jewels of python with big data & the jvm (1)Sharing (or stealing) the jewels of python with big data & the jvm (1)
Sharing (or stealing) the jewels of python with big data & the jvm (1)
Holden Karau
 
MacRuby
MacRubyMacRuby
MacRuby
bostonrb
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern Compilers
Min-Yih Hsu
 
Opal - Ruby Style!! Ruby in the browser
Opal - Ruby Style!!  Ruby in the browserOpal - Ruby Style!!  Ruby in the browser
Opal - Ruby Style!! Ruby in the browser
Forrest Chang
 
TypeProf for IDE: Enrich Development Experience without Annotations
TypeProf for IDE: Enrich Development Experience without AnnotationsTypeProf for IDE: Enrich Development Experience without Annotations
TypeProf for IDE: Enrich Development Experience without Annotations
mametter
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
 
Iron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NETIron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NET
Kristian Kristensen
 
Ruby Programming Language - Introduction
Ruby Programming Language - IntroductionRuby Programming Language - Introduction
Ruby Programming Language - Introduction
Kwangshin Oh
 
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
mametter
 
MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?
Joshua Ballanco
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
Ricardo Sanchez
 
Ruby formatters
Ruby formattersRuby formatters
Ruby formatters
Visuality
 
Enjoy Ruby Programming in IDE and TypeProf
Enjoy Ruby Programming in IDE and TypeProfEnjoy Ruby Programming in IDE and TypeProf
Enjoy Ruby Programming in IDE and TypeProf
mametter
 
Bldr: A Minimalist JSON Templating DSL
Bldr: A Minimalist JSON Templating DSLBldr: A Minimalist JSON Templating DSL
Bldr: A Minimalist JSON Templating DSL
Alex Sharp
 
Special Subject 1+2: RoR 2
Special Subject 1+2: RoR 2Special Subject 1+2: RoR 2
Special Subject 1+2: RoR 2
Stefan Fodor
 
Sharing (or stealing) the jewels of python with big data & the jvm (1)
Sharing (or stealing) the jewels of python with big data & the jvm (1)Sharing (or stealing) the jewels of python with big data & the jvm (1)
Sharing (or stealing) the jewels of python with big data & the jvm (1)
Holden Karau
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern Compilers
Min-Yih Hsu
 
Opal - Ruby Style!! Ruby in the browser
Opal - Ruby Style!!  Ruby in the browserOpal - Ruby Style!!  Ruby in the browser
Opal - Ruby Style!! Ruby in the browser
Forrest Chang
 

Viewers also liked (7)

Yohn erney cardona 9ºd
Yohn erney cardona 9ºdYohn erney cardona 9ºd
Yohn erney cardona 9ºd
yohnerney
 
My very first power point
My very first power pointMy very first power point
My very first power point
thereluctantwriter61
 
Codes and conventions of thriller films
Codes and conventions of thriller filmsCodes and conventions of thriller films
Codes and conventions of thriller films
NathalieO
 
Locations powerpoint
Locations powerpointLocations powerpoint
Locations powerpoint
NathalieO
 
Lampiran surat pengumuman pkm didanai 2012 3
Lampiran surat pengumuman pkm didanai 2012 3Lampiran surat pengumuman pkm didanai 2012 3
Lampiran surat pengumuman pkm didanai 2012 3
Hanif Arian
 
Test presentation
Test presentationTest presentation
Test presentation
edatactive
 
Yohn erney cardona 9ºd
Yohn erney cardona 9ºdYohn erney cardona 9ºd
Yohn erney cardona 9ºd
yohnerney
 
Codes and conventions of thriller films
Codes and conventions of thriller filmsCodes and conventions of thriller films
Codes and conventions of thriller films
NathalieO
 
Locations powerpoint
Locations powerpointLocations powerpoint
Locations powerpoint
NathalieO
 
Lampiran surat pengumuman pkm didanai 2012 3
Lampiran surat pengumuman pkm didanai 2012 3Lampiran surat pengumuman pkm didanai 2012 3
Lampiran surat pengumuman pkm didanai 2012 3
Hanif Arian
 
Test presentation
Test presentationTest presentation
Test presentation
edatactive
 
Ad

Similar to Intro for RoR (20)

Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
Manoj Kumar
 
P4 P Update January 2009
P4 P Update January 2009P4 P Update January 2009
P4 P Update January 2009
vsainteluce
 
Ebay News 2001 4 19 Earnings
Ebay News 2001 4 19 EarningsEbay News 2001 4 19 Earnings
Ebay News 2001 4 19 Earnings
QuarterlyEarningsReports
 
Ebay News 2000 10 19 Earnings
Ebay News 2000 10 19 EarningsEbay News 2000 10 19 Earnings
Ebay News 2000 10 19 Earnings
QuarterlyEarningsReports
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
Espen Brækken
 
Ruby'on'rails
Ruby'on'railsRuby'on'rails
Ruby'on'rails
gmergel
 
Ruby hellug
Ruby hellugRuby hellug
Ruby hellug
Eleni Hourouzidou
 
Book of ruby
Book of rubyBook of ruby
Book of ruby
phongbk1609
 
Pré Descobrimento Do Brasil
Pré Descobrimento Do BrasilPré Descobrimento Do Brasil
Pré Descobrimento Do Brasil
ecsette
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
Ruby On Rails pizza training
Ruby On Rails pizza trainingRuby On Rails pizza training
Ruby On Rails pizza training
david_alphen
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overview
Thomas Asikis
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
Gaveen Prabhasara
 
Ruby an overall approach
Ruby an overall approachRuby an overall approach
Ruby an overall approach
Felipe Schmitt
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
Andy Maleh
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
Eleni Huebsch
 
Why ruby
Why rubyWhy ruby
Why ruby
Bill Chea
 
Ruby programming
Ruby programmingRuby programming
Ruby programming
Kartik Kalpande Patil
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
Manoj Kumar
 
P4 P Update January 2009
P4 P Update January 2009P4 P Update January 2009
P4 P Update January 2009
vsainteluce
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
Espen Brækken
 
Ruby'on'rails
Ruby'on'railsRuby'on'rails
Ruby'on'rails
gmergel
 
Pré Descobrimento Do Brasil
Pré Descobrimento Do BrasilPré Descobrimento Do Brasil
Pré Descobrimento Do Brasil
ecsette
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
Ruby On Rails pizza training
Ruby On Rails pizza trainingRuby On Rails pizza training
Ruby On Rails pizza training
david_alphen
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overview
Thomas Asikis
 
Ruby an overall approach
Ruby an overall approachRuby an overall approach
Ruby an overall approach
Felipe Schmitt
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
Andy Maleh
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
Eleni Huebsch
 
Ad

Recently uploaded (20)

ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 

Intro for RoR

  • 1. An Introduction to Ruby and Rails Matthew Bohnsack Wannabe Rubyist November 9th 2005
  • 2. Outline  What is Ruby and why should I care?  What is Rails and why should I care?  Two must-have tools for Ruby development  Major Ruby features (the language in a nutshell)  Rails overview  Where to go for more information  Questions / Hacking November 9th 2005 An Introduction to Ruby and Rails 2
  • 3. What is Ruby? Why should I care?  What:  The Wikipedia answer is here.  Created/lead by Matz (Japanese)  Open Source interpreted scripting language, like Perl, Python, Tcl, etc., but focused on being very object oriented, expressive, and bringing joy to programming.  Principle of least surprise  Why:  Productivity ideas presented in Ousterhout’s 1998 paper coming to very serious critical mass (and beyond)  Learn a new language to learn new ways of thinking about code in any language (e.g., blocks and iterators)  Joy! November 9th 2005 An Introduction to Ruby and Rails 3
  • 4. What is Rails? Why should I care?  What:  Web Framework that makes building database-driven MVC-oriented web apps easy through a template engine, ORM (ActiveRecord) and other best practices, such as test driven development, deployment tools, patterns, etc.  Much less complicated than J2EE solutions, but perhaps more so than PHP or Perl in cgi-bin.  Copy cats are being created in other languages:  Python (TurboGears)  Perl (Maypole)  http://rubyonrails.org/ + book + online screencasts + online docs & tutorials  Why:  I’ve been watching the world of web development since ~ 1995, and I’ve never seen anything like Rails in terms of buzz, momentum, adoption rate, etc. November 9th 2005 An Introduction to Ruby and Rails 4
  • 5. Must have tool #1: irb # ~/.irbrc  Interactive ruby console: require 'irb/completion' use_readline=true  Experimenton the fly auto_indent_mode=true  Tab complete object methods … November 9th 2005 An Introduction to Ruby and Rails 5
  • 6. Must have tool #2: ri  Console-based Ruby doc tool November 9th 2005 An Introduction to Ruby and Rails 6
  • 7. Ruby in a nutshell – irb sessions follow  Like all interpreted scripting languages, you can put code into a file, chmod +x, then just execute it.  But, we’ll mostly use irb sessions in this presentation… November 9th 2005 An Introduction to Ruby and Rails 7
  • 8. Ruby in a nutshell – objects are everywhere  Some languages have built-in types that aren’t objects. Not so with Ruby. Everything’s an object: November 9th 2005 An Introduction to Ruby and Rails 8
  • 9. Ruby in a nutshell – objects have methods Bang on the tab key in irb to see the methods that are available for each object. November 9th 2005 An Introduction to Ruby and Rails 9
  • 10. Ruby in a nutshell – Variables  Local variables - start with lower case:  foo  bar  Global variables - start with dollar sign:  $foo  $bar  Constants and Classes – start with capital letter:  CONSTANT  Class  Instance variables – start with at sign:  @foo  @bar  Class variables – start with double at sign:  @@foo  @@bar November 9th 2005 An Introduction to Ruby and Rails 10
  • 11. Ruby in a nutshell – Arrays November 9th 2005 An Introduction to Ruby and Rails 11
  • 12. Ruby in a nutshell – Hashes November 9th 2005 An Introduction to Ruby and Rails 12
  • 13. Ruby in a nutshell – Symbols  Starts with a ‘:’  Only one copy of a symbol kept in memory November 9th 2005 An Introduction to Ruby and Rails 13
  • 14. Ruby in a nutshell – Blocks & Iterators November 9th 2005 An Introduction to Ruby and Rails 14
  • 15. Ruby in a nutshell – It’s easy to build classes November 9th 2005 An Introduction to Ruby and Rails 15
  • 16. Ruby in a nutshell – It’s fun to play with classes (like the one we just made) November 9th 2005 An Introduction to Ruby and Rails 16
  • 17. Ruby in a nutshell – Classes are open  Example shown here uses our Hacker class, but what happens when the whole language is open? November 9th 2005 An Introduction to Ruby and Rails 17
  • 18. Ruby in a nutshell – Other notes on Classes  Ruby only has single inheritance. This makes things simpler, but mix-ins provide much of multiple inheritance’s benefit, without the hassle. November 9th 2005 An Introduction to Ruby and Rails 18
  • 19. Ruby in a nutshell – a few gotchas  Despite the principle of least surprise:  Zero isn’t false:  No increment operator (foo++). Instead use:  foo += 1  foo = foo + 1 November 9th 2005 An Introduction to Ruby and Rails 19
  • 20. Ruby in a nutshell – RubyGems  CPAN for Ruby? http://docs.rubygems.org/  Examples:  gem list  gem install redcloth --version ">= 3.0.0" …  Using gems in your program:  require ‘rubygems’  require ‘some_gem’ November 9th 2005 An Introduction to Ruby and Rails 20
  • 21. Want to learn more Ruby?  Excellent, simple, beginner’s tutorial:  http://www.math.umd.edu/~dcarrera/ruby/0.3/index.html  Other stuff at end of talk  Start hacking November 9th 2005 An Introduction to Ruby and Rails 21
  • 22. Quick Rails Demo – Build a TODO list application in 5 minutes  Define database  rails todo  cd todo  Edit config/database.yml  ./script/generate model Todo  ./script/generate scaffold todo  Look at scaffolding  ./script/server –b www.bohnsack.com  Add due_date field, regenerate scaffolding, and check the results  ./script/console November 9th 2005 An Introduction to Ruby and Rails 22
  • 23. Where to go for more information  Books:  Online material:  First edition of Pickaxe online for free  http://www.ruby-doc.org/  why’s (poignant) guide to Ruby  http://rubyonrails.org/  Rails screencast(s)  Planet Ruby on Rails November 9th 2005 An Introduction to Ruby and Rails 23
  • 24. The End / Questions November 9th 2005 An Introduction to Ruby and Rails 24