SlideShare a Scribd company logo
density!"!




Ruby on Rails
An Historical Introduction




Cleveland Web Sig                   June 19, 2010
An Introduction to Ruby on Rails
Overview
Joe Fiorini
Rails Developer, Technology Evangelist, Husband, Dog
Lover
An Introduction to Ruby on Rails
density!"!
An Introduction to Ruby on Rails
An Introduction to Ruby on Rails
An Introduction to Ruby on Rails
Goals
Why to use Rails?
What’s Ruby and what’s Rails?
How does Rails make developers happy?
Where do I go for more information?
Assumptions
Assumptions
Basic HTTP knowledge
Assumptions
Basic HTTP knowledge
Basic object-oriented principles
Assumptions
Basic HTTP knowledge
Basic object-oriented principles
Dynamic web development
Assumptions
Basic HTTP knowledge
Basic object-oriented principles
Dynamic web development
SQL
#websigrails
For the Twits
An Introduction to Ruby on Rails
An Introduction to Ruby on Rails
Core Philosophy
DRY
Don’t Repeat Yourself
Convention Over Configuration
Get Started Faster!
REST
Your Application as an API
MVC
Model
Data Tier
View
Displayed to the user
Controller
Tying the model and view together
An Introduction to Ruby on Rails
An Introduction to Ruby on Rails
“
I'm trying to make Ruby natural,
not simple.



                     Yukihiro “Matz” Matsumoto
An Introduction to Ruby on Rails
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
ActionPack
ActiveModel
ActionMailer
ActiveResource


ActiveSupport

Railties
An Introduction to Ruby on Rails
Life of a Request
http://www.densitypop.com/
ActionPack




             ActionDispatch
ActionPack



    Blog3::Application.routes.draw do |map|

     root :to => "posts#index"

    end
ActionPack




             ActionDispatch
ActionPack
 ActionDispatch
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch



       class PostsController < ApplicationController

        def index
         @posts = Post.order("created_at DESC").
                  limit(10)
        end

       end
ActionPack
  ActionDispatch                                   Inheritence

       class PostsController < ApplicationController


        def index
         @posts = Post.order("created_at DESC").
                  limit(10)
        end

       end
ActionPack
  ActionDispatch
                               Instance Method

             class PostsController < ApplicationController

              def index
               @posts = Post.order("created_at DESC").
                        limit(10)
              end

             end
ActionPack
  ActionDispatch
                            Instance Variable (field/private variable)

             class PostsController < ApplicationController

              def index
                 @posts
                    = Post.order("created_at DESC").
                        limit(10)
              end

             end
ActionPack
  ActionDispatch
                    Class                   Class method (static)

             class PostsController < ApplicationController

              def index
               @posts =     Post.order("created_at DESC").
                               limit(10)
              end

             end
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch   ActionController
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveRecord




                  SQLite/
                  MySQL/
               PostgreSQL/…
ActiveRecord

                    SQLite/
                    MySQL/
                   MongoDB/…




                       posts
               id
               title
               body
ActiveRecord

               SQLite/
               MySQL/
              MongoDB/…




                  posts
          id              Post
          title
          body
ActiveRecord




    class Post < ActiveRecord::Base
    end
ActiveRecord



    post.title
    post.body
    post.id

    post.save
    post.destroy
ActiveRecord




    Post.find_by_title "Awesomest post ever!"

    SELECT * FROM posts WHERE title = 'Awesomest post ever!'
ActiveRecord




    Post.where("title = 'Awesomest post ever!'")

    SELECT * FROM posts WHERE title = 'Awesomest post ever!'
ActiveRecord



    Post.joins(:authors).where("authors.name = 'Joe'")

    SELECT * FROM posts INNER JOIN authors ON
      posts.author_id = authors.id
      WHERE authors.author_name = 'Joe'
ActiveRecord



    Post.find_by_title "Awesomest post ever!"

    vs.
    Post.where("title = 'Awesomest post ever!'")
ActiveRecord
    class CreatePosts < ActiveRecord::Migration
     def self.up
       create_table :posts do |t|
        t.string :title
        t.text :body

       t.timestamps
      end
     end

     def self.down
      drop_table :posts
     end
    end
ActiveRecord


    Validations
      validates_presence_of
      validates_uniqueness_of
      validates_format_of
      validates_length_of
      …
ActiveRecord




    http://guides.rails.info
    RTFM
ActiveModel
  ActionDispatch             ActionController




       class Post < ActiveRecord::Base
       end
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch   ActionController

                   ActiveRecord
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch             ActionController

                             ActiveRecord

       <ol>

        <% @posts.each do |post| %>

         <li class="post">

           <h2><%= link_to post.title, post %></h2>
           <span><%= post.body %></span>

         </li>

        <% end %>

       </ol>
ActionPack
  ActionDispatch             Iterator (for loop)
                              ActionController

                             ActiveRecord

       <ol>



        <% @posts.each do |post| %>

         <li class="post">

           <h2><%= link_to post.title, post %></h2>
           <span><%= post.body %></span>

         </li>

        <% end %>
       </ol>
ActionPack
Block (anonymous function)
  ActionDispatch             ActionController

                             ActiveRecord        Block parameter
       <ol>

        <% @posts.each do |post| %>
                  do |post| %>
         <li class="post">

           <h2><%= link_to post.title, post %></h2>
           <span><%= post.body %></span>

         </li>

        <% end %>
        <% end %>
       </ol>
ActionPack
  ActionDispatch             ActionController

                             ActiveRecord


Helper method
    <ol>

        <% @posts.each do |post| %>

         <li class="post">

           <h2>                   </h2>
           <span><%= post.body %></span> %>
                 <%= link_to post.title, post
         </li>

        <% end %>

       </ol>
ActionPack
  ActionDispatch             ActionController

                             ActiveRecord


Helper method
    <ol>

        <% @posts.each do |post| %>

         <li class="post">

           <h2>                   </h2>
           <span><%= post.body %></span> %>
                 <%= link_to post.title, post
         </li>

        <% end %> <a href="...">Post Title</a>

       </ol>
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch   ActionController   ActionView

                   ActiveRecord


       <html>
       ...
       </html>
http://densitypop.com/posts/22
ActionPack




             ActionDispatch
ActionPack



    Blog3::Application.routes.draw do |map|

     resources :posts

    end
GET /posts/new
Post#new
POST /posts
Post#create
GET /posts/edit/22
Post#edit
PUT /post/22
Post#update
GET /posts/22
Post#show
DELETE /posts/22
Post#destroy
ActionPack




             ActionDispatch
ActionPack
 ActionDispatch
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch




      class PostsController < ApplicationController

        def show
         @post = Post.find(params[:id])
        end

      end
ActionPack
  ActionDispatch

 Request Parameter Hash

       class PostsController < ApplicationController

        def show
         @post = Post.find(       )
        end                     params[:id]

       end
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch   ActionController
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch             ActionController




       class Post < ActiveRecord::Base
       end
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch   ActionController

                   ActiveRecord
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch            ActionController

                            ActiveRecord




       <h1><%= link_to @post.title, @post %></h1>
       <span><%= @post.body %></span>
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch   ActionController   ActionView

                   ActiveRecord


       <html>
       ...
       </html>
http://densitypop.com/feed.xml
ActionPack




             ActionDispatch
ActionPack



    Blog3::Application.routes.draw do |map|

     match 'feed.xml', :to => 'posts#index'

    end
ActionPack




             ActionDispatch
ActionPack
 ActionDispatch
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch


      class PostsController < ApplicationController
       respond_to :xml

        def index
         respond_with(@posts = Post.
                      order("created_at DESC").
                      limit(10))
        end

      end
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch   ActionController
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch             ActionController




       class Post < ActiveRecord::Base
       end
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch   ActionController

                   ActiveRecord
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch              ActionController

                              ActiveRecord


       atom_feed do |feed|
        feed.title("Joe's Awesome Blog!")
        feed.updated(@posts.first.created_at)

        @posts.each do |post|
         feed.entry(post) do |entry|
          entry.title(post.title)
          entry.content(post.body, :type => 'html')
          entry.author { |author| author.name("Joe") }
         end
        end

       end
http://densitypop.com/posts.json
ActionPack




             ActionDispatch
ActionPack



    Blog3::Application.routes.draw do |map|

     resources :posts

    end
ActionPack




             ActionDispatch
ActionPack
 ActionDispatch
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch


      class PostsController < ApplicationController
       respond_to :xml, :json

        def index
         respond_with(@posts = Post.
                      order("created_at DESC").
                      limit(10))
        end

      end
ActionPack
  ActionDispatch




                   ActionController
ActionPack
  ActionDispatch   ActionController
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch             ActionController




       class Post < ActiveRecord::Base
       end
ActiveModel
  ActionDispatch         ActionController




                   ActiveRecord
ActiveModel
  ActionDispatch   ActionController

                   ActiveRecord
ActionPack
  ActionDispatch         ActionController

                         ActiveRecord




                   ActionView
ActionPack
  ActionDispatch                 ActionController

                                 ActiveRecord




       [This slide intentionally left blank]
There you go.
Isn’t that easy?
An Introduction to Ruby on Rails
Digging Deeper
Nothing is Sacred
Anything can be overridden
Not all magic
Some illusions too
Enterprise Ready
http://www.workingwithrails.com/high-profile-organisations
http://bit.ly/websigrailslinks
Resources


            http://bit.ly/websigrailslinks
Cleveland Ruby Brigade
http://www.meetup.com/ClevelandRuby




                         http://bit.ly/websigrailslinks
Agile Web Dev. with Rails
http://pragprog.com/titles/rails4/




                              http://bit.ly/websigrailslinks
Rails 3 in Action
http://www.manning.com/katz/




                          http://bit.ly/websigrailslinks
http://bit.ly/websigrailslinks
An Introduction to Ruby on Rails
The End
http://speakerrate.com/joefiorini
Please rate this talk (only if it’s good)!

More Related Content

What's hot (20)

[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
Ivano Malavolta
 
Angular JS
Angular JSAngular JS
Angular JS
John Temoty Roca
 
Jsp
JspJsp
Jsp
Priya Goyal
 
Jsp
JspJsp
Jsp
Pooja Verma
 
Ruby on Rails: Coding Guideline
Ruby on Rails: Coding GuidelineRuby on Rails: Coding Guideline
Ruby on Rails: Coding Guideline
Nascenia IT
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
BG Java EE Course
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
peter_marklund
 
Spring Mvc Rest
Spring Mvc RestSpring Mvc Rest
Spring Mvc Rest
Craig Walls
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
Katy Slemon
 
JavaScript - Chapter 7 - Advanced Functions
 JavaScript - Chapter 7 - Advanced Functions JavaScript - Chapter 7 - Advanced Functions
JavaScript - Chapter 7 - Advanced Functions
WebStackAcademy
 
REST APIs in Laravel 101
REST APIs in Laravel 101REST APIs in Laravel 101
REST APIs in Laravel 101
Samantha Geitz
 
Implicit object.pptx
Implicit object.pptxImplicit object.pptx
Implicit object.pptx
chakrapani tripathi
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
Sher Singh Bardhan
 
jQuery - Chapter 3 - Effects
jQuery - Chapter 3 - Effects  jQuery - Chapter 3 - Effects
jQuery - Chapter 3 - Effects
WebStackAcademy
 
Jsp element
Jsp elementJsp element
Jsp element
kamal kotecha
 
jQuery
jQueryjQuery
jQuery
Ivano Malavolta
 
JSP - Java Server Page
JSP - Java Server PageJSP - Java Server Page
JSP - Java Server Page
Vipin Yadav
 
Web Applications and Deployment
Web Applications and DeploymentWeb Applications and Deployment
Web Applications and Deployment
BG Java EE Course
 
Data Access with JDBC
Data Access with JDBCData Access with JDBC
Data Access with JDBC
BG Java EE Course
 
Distributed Ruby and Rails
Distributed Ruby and RailsDistributed Ruby and Rails
Distributed Ruby and Rails
Wen-Tien Chang
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
Ivano Malavolta
 
Ruby on Rails: Coding Guideline
Ruby on Rails: Coding GuidelineRuby on Rails: Coding Guideline
Ruby on Rails: Coding Guideline
Nascenia IT
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
peter_marklund
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
Katy Slemon
 
JavaScript - Chapter 7 - Advanced Functions
 JavaScript - Chapter 7 - Advanced Functions JavaScript - Chapter 7 - Advanced Functions
JavaScript - Chapter 7 - Advanced Functions
WebStackAcademy
 
REST APIs in Laravel 101
REST APIs in Laravel 101REST APIs in Laravel 101
REST APIs in Laravel 101
Samantha Geitz
 
jQuery - Chapter 3 - Effects
jQuery - Chapter 3 - Effects  jQuery - Chapter 3 - Effects
jQuery - Chapter 3 - Effects
WebStackAcademy
 
JSP - Java Server Page
JSP - Java Server PageJSP - Java Server Page
JSP - Java Server Page
Vipin Yadav
 
Web Applications and Deployment
Web Applications and DeploymentWeb Applications and Deployment
Web Applications and Deployment
BG Java EE Course
 
Distributed Ruby and Rails
Distributed Ruby and RailsDistributed Ruby and Rails
Distributed Ruby and Rails
Wen-Tien Chang
 

Similar to An Introduction to Ruby on Rails (20)

Rails 3 Beautiful Code
Rails 3 Beautiful CodeRails 3 Beautiful Code
Rails 3 Beautiful Code
GreggPollack
 
Barcamp Auckland Rails3 presentation
Barcamp Auckland Rails3 presentationBarcamp Auckland Rails3 presentation
Barcamp Auckland Rails3 presentation
Sociable
 
Rails2 Pr
Rails2 PrRails2 Pr
Rails2 Pr
xibbar
 
Una Critica a Rails by Luca Guidi
Una Critica a Rails by Luca GuidiUna Critica a Rails by Luca Guidi
Una Critica a Rails by Luca Guidi
Codemotion
 
Rails 3 (beta) Roundup
Rails 3 (beta) RoundupRails 3 (beta) Roundup
Rails 3 (beta) Roundup
Wayne Carter
 
Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11
Pedro Cunha
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
Yehuda Katz
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
Yi-Ting Cheng
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
Yehuda Katz
 
Learning to code for startup mvp session 3
Learning to code for startup mvp session 3Learning to code for startup mvp session 3
Learning to code for startup mvp session 3
Henry S
 
Getting started with Rails (2), Season 2
Getting started with Rails (2), Season 2Getting started with Rails (2), Season 2
Getting started with Rails (2), Season 2
RORLAB
 
Rail3 intro 29th_sep_surendran
Rail3 intro 29th_sep_surendranRail3 intro 29th_sep_surendran
Rail3 intro 29th_sep_surendran
SPRITLE SOFTWARE PRIVATE LIMIT ED
 
SOLID Ruby SOLID Rails
SOLID Ruby SOLID RailsSOLID Ruby SOLID Rails
SOLID Ruby SOLID Rails
Michael Mahlberg
 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 Ajax
Wen-Tien Chang
 
Action Controller Overview, Season 2
Action Controller Overview, Season 2Action Controller Overview, Season 2
Action Controller Overview, Season 2
RORLAB
 
Cocoa on-rails-3rd
Cocoa on-rails-3rdCocoa on-rails-3rd
Cocoa on-rails-3rd
Xiaochun Shen
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
tutorialsruby
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
tutorialsruby
 
Rails 4.0
Rails 4.0Rails 4.0
Rails 4.0
Robert Gogolok
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
Thomas Fuchs
 
Rails 3 Beautiful Code
Rails 3 Beautiful CodeRails 3 Beautiful Code
Rails 3 Beautiful Code
GreggPollack
 
Barcamp Auckland Rails3 presentation
Barcamp Auckland Rails3 presentationBarcamp Auckland Rails3 presentation
Barcamp Auckland Rails3 presentation
Sociable
 
Rails2 Pr
Rails2 PrRails2 Pr
Rails2 Pr
xibbar
 
Una Critica a Rails by Luca Guidi
Una Critica a Rails by Luca GuidiUna Critica a Rails by Luca Guidi
Una Critica a Rails by Luca Guidi
Codemotion
 
Rails 3 (beta) Roundup
Rails 3 (beta) RoundupRails 3 (beta) Roundup
Rails 3 (beta) Roundup
Wayne Carter
 
Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11
Pedro Cunha
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
Yehuda Katz
 
OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
Yi-Ting Cheng
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
Yehuda Katz
 
Learning to code for startup mvp session 3
Learning to code for startup mvp session 3Learning to code for startup mvp session 3
Learning to code for startup mvp session 3
Henry S
 
Getting started with Rails (2), Season 2
Getting started with Rails (2), Season 2Getting started with Rails (2), Season 2
Getting started with Rails (2), Season 2
RORLAB
 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 Ajax
Wen-Tien Chang
 
Action Controller Overview, Season 2
Action Controller Overview, Season 2Action Controller Overview, Season 2
Action Controller Overview, Season 2
RORLAB
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
tutorialsruby
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
tutorialsruby
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
Thomas Fuchs
 
Ad

Recently uploaded (20)

National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FMESupporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdfENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptxFIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
High Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdfHigh Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdf
Safe Software
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training RoadblocksDown the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptxFIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FMESupporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdfENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptxFIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
High Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdfHigh Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdf
Safe Software
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training RoadblocksDown the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptxFIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
Ad

An Introduction to Ruby on Rails

Editor's Notes

  • #2: TAKE IT SLOW Pause after topics Take some deep breaths Walk to other side of projector when pausing
  • #5: Within3
  • #6: - Ecommerce Sites on Shopify - iPad/iPhone R&amp;D - Consulting
  • #7: - Ecommerce Sites on Shopify - iPad/iPhone R&amp;D - Consulting
  • #11: If I throw out a term that you don&amp;#x2019;t understand, please feel free to ask!
  • #12: If I throw out a term that you don&amp;#x2019;t understand, please feel free to ask!
  • #13: If I throw out a term that you don&amp;#x2019;t understand, please feel free to ask!
  • #14: If I throw out a term that you don&amp;#x2019;t understand, please feel free to ask!
  • #18: Write once, use everywhere Code is easier to consume Easier to edit later
  • #21: How many have not used MVC? It&amp;#x2019;s up to you to architect and organize your code in those tools. Rails makes that decision for you by implementing MVC.
  • #23: Code driving the UI that gets displayed to the user
  • #24: Interacts with model and sends the data to the view
  • #25: - Open source framework for developing web applications - Created by David Heinemeier Hansson - 1.0 was an extremely opinionated framework - 3.0 allows you to change many of the opinions &amp;#x2026;Written in the language
  • #26: - Everything has a type, but the language infers types at runtime instead of you specifying them up front
  • #30: Remembering names is not important; knowing how the pieces fit together &amp; interact is
  • #34: Utility collection and standard Ruby core extensions used both by Rails itself and your application
  • #35: The glue; ties together framework libraries and 3rd party plugins
  • #36: Build an application through the life of an HTTP request
  • #37: - List 10 most recent posts, newest first
  • #43: ...since for most of you this is your first time seeing Ruby code, let&amp;#x2019;s look at this a little bit
  • #46: any instance variables in a controller are automatically handed into the view
  • #47: ...since for most of you this is your first time seeing Ruby code, let&amp;#x2019;s look at this a little bit
  • #51: ActiveRecord is.... Default option, but you can use any ORM that implements ActiveModel
  • #55: Inheriting from ActiveRecord::Base does some pretty cool things for us
  • #56: Because I have a class called Post AR knows to look up... it also gives us some more time saving methods like...
  • #60: find_by_title will call SQL right away .where (and other query methods) will delegate the SQL call to the first time the array is used
  • #61: Way to go forward and backwards between versions of your database
  • #64: We didn&amp;#x2019;t have to write a single line of data access code
  • #70: &amp;#x2026;here&amp;#x2019;s some more strange Ruby syntax
  • #73: this helper method generates the html for a link
  • #74: this helper method generates the html for a link
  • #81: &amp;#x2026;this generates a number of helpful routes for us
  • #91: ...since for most of you this is your first time seeing Ruby code, let&amp;#x2019;s look at this a little bit
  • #92: params[:id] comes from resources route
  • #96: ActiveRecord is.... Default option, but you can use any ORM that implements ActiveModel
  • #97: We still haven&amp;#x2019;t written a single line of data access code
  • #103: &amp;#x2026;here&amp;#x2019;s some more strange Ruby syntax
  • #110: &amp;#x2026;this generates a number of helpful routes for us
  • #114: ...since for most of you this is your first time seeing Ruby code, let&amp;#x2019;s look at this a little bit
  • #118: ActiveRecord is.... Default option, but you can use any ORM that implements ActiveModel
  • #119: We still haven&amp;#x2019;t written a single line of data access code
  • #125: With builder all of our block parameters become parent XML tags and all of our method calls child tags; we define attributes by passing a hash to a tag method &amp;#x2026;what if we wanted to enable easy Javascript interaction?
  • #128: &amp;#x2026;this generates a number of helpful routes for us
  • #132: ...since for most of you this is your first time seeing Ruby code, let&amp;#x2019;s look at this a little bit
  • #136: ActiveRecord is.... Default option, but you can use any ORM that implements ActiveModel
  • #137: We still haven&amp;#x2019;t written a single line of data access code
  • #143: respond_with tells ActionController to format the object if it can Rails can convert any object into JSON
  • #145: We&amp;#x2019;ve barely scratched the surface of what Rails can do.
  • #146: Convention is very powerful, but sometimes it makes sense to override the defaults
  • #147: Rails gets most of its flexibility from the Ruby language. Uses &amp;#x201C;metaprogramming&amp;#x201D; to generate code at runtime. Optimized for the best of productivity &amp; performance.
  • #148: You&amp;#x2019;d be surprised to see who&amp;#x2019;s using Rails.
  • #149: Highly recommend some further reading to get a better feel for how you can make Rails work for you.
  • #153: ...in case you missed it