SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Ruby On Rails



     A brief tutorial

    Avik Sengupta




   © 2005 Avik Sengupta. All Rights Reserved.   1
Agenda

Introduce Rails via these slides
Show me the code!
  Code up a Rails application from scratch

(This tutorial assumes a very limited knowledge of
  Ruby ... did you attend Premshree or Yogi's talks?)




                  © 2005 Avik Sengupta. All Rights Reserved.            2
Rails

     “Rails is a full-stack, open-source web
   framework in Ruby for writing real-world
applications with joy and less code than most
     frameworks spend doing XML sit-ups”
         Rails Creator - David H. Hansson




                  © 2005 Avik Sengupta. All Rights Reserved.           3
What is Rails

Full Stack
  Model (Object Relation Mapping) – Active Record
  View – Action View +ERb
  Controller – Action Controller
  Mail integration – ActionMailer
  Web Services – Action Web services
..therefore, all layers work seamlessly (DRY)




                 © 2005 Avik Sengupta. All Rights Reserved.                   4
The Rails request cycle




© 2005 Avik Sengupta. All Rights Reserved.                  5
Active Record

Automated mappings :

Given this table..
      CREATE TABLE entries (
         id int(11) NOT NULL auto_increment,
         name varchar(255),
         comments varchar(255),
         PRIMARY KEY (id)
      );




                     © 2005 Avik Sengupta. All Rights Reserved.                   6
Active Record
You can do
     class Entry < ActiveRecord::Base
       # nothing here!
     end

     entry = Entry.new
     entry.name = "John"
     entry.comments = "What a great Web site!"
     entry.save

     entry = Entry.find(1)
     puts entry.name # output: "John"


                   © 2005 Avik Sengupta. All Rights Reserved.                   7
Active Record

  Associations only need to be declared
class Firm < ActiveRecord::Base
   has_many :clients
   has_one :account
   belongs_to :conglomerate
end

firm.clients.each do |client| {...}
firm.has_clients?




                  © 2005 Avik Sengupta. All Rights Reserved.                   8
Action Controller

Action Controller
  Handles the entire request cycle
  Actions grouped into Controller
  Each action is method in the controller class
  Instance variables are passed to the view

class GuestbookController <
  ActionController::Base
  def index
    @entries = Entries.find_all
  end
end
                    © 2005 Avik Sengupta. All Rights Reserved.                       9
Views

Templates in Embedded Ruby (like JSP or ASP)
Expression language is Pure Ruby
Helper classes provide common functionality for
strings, dates, forms etc.
<html>
  <body>
    <h1>Cookbook</h1>
    <% for e in @entries %>
    <p><%= e.name %>: <%= e.description %></p>
    <% end %>
  </body>
</html>

                © 2005 Avik Sengupta. All Rights Reserved.           10
Action Mailer

Integrate e-mails from Rails applications
# send email with attachment
def report_notification(recipient)
  recipients recipient.email_address_with_name
  subject "Your Report"
  from "owner@app.com"

  attachment :content_type => "image/gif", :body =>
  File.read("logo.gif")

  attachment "image/gif" do |a|
    a.body = generate_chart()
  end
end

                  © 2005 Avik Sengupta. All Rights Reserved.                   11
Action Web Services

Server side WS and XML-RPC protocols
Export API's as Web Services




              © 2005 Avik Sengupta. All Rights Reserved.                         12
Demo
     Build a web based cookbook, live, from scratch.

  For reference, some of the steps we will go through are
illustrated in the following slides. However, for the tutorial,
          we will write the code directly ourselves!




                       © 2005 Avik Sengupta. All Rights Reserved.          13
Downloads and Installation
Install Ruby
   On Windows you can use the One-Click installer. For other
   platforms, use your platform packages
Install RubyGems (a ruby package management
system)
   Download from http://rubyforge.org/projects/rubygems/
   Unpack the downloaded archive and in that directory run the
   command:
   ruby install.rb
Install Rails
   From the command line execute: From the command line
   execute:
   gem install rails

                      © 2005 Avik Sengupta. All Rights Reserved.        14
First Steps

Generate Application Structure
$ rails cookbook
Create Database
Generate Models and Controllers
Use scaffold to create basic app




                © 2005 Avik Sengupta. All Rights Reserved.                 15
More code...

Flesh out the application
  Create Views
     Use partials and helpers
     Use layouts
  Implement Validations
  Model complex relationships




                     © 2005 Avik Sengupta. All Rights Reserved.                  16
Advanced Stuff

Callbacks
Transactions
Caching
Rails makes AJAX easy
  Go to Vamsee Kankala's tutorial
Rails makes testing easy
  Again, go to Vamsee's tutorial




                  © 2005 Avik Sengupta. All Rights Reserved.                    17
Questions?




Curiosity killed the cat... or did it?




       © 2005 Avik Sengupta. All Rights Reserved.                18
Credits

This presentation inspired by
  Rolling with Rails (OnLamp) by Curt Hibbs
     http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html
  Presentation at Chicago ACM by Ryan Platte and John
  W. Long
     http://www.ruby-doc.org/docs/Get to the Point Development with Ru




                       © 2005 Avik Sengupta. All Rights Reserved.             19
More Info

Main Ruby Site
  http://www.ruby-lang.org
One Click Ruby Installer for Windows
  http://rubyinstaller.rubyforge rubyforge.org
Main Rails Site
  http://www.rubyonrails.org
This presentation
  http://www.sengupta.net/talks/




                   © 2005 Avik Sengupta. All Rights Reserved.               20

Mais conteúdo relacionado

Mais procurados

Using Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivityUsing Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivity
Claus Ibsen
 

Mais procurados (20)

Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
 
Getting Started with Apache Camel - Malmo JUG - March 2013
Getting Started with Apache Camel - Malmo JUG - March 2013Getting Started with Apache Camel - Malmo JUG - March 2013
Getting Started with Apache Camel - Malmo JUG - March 2013
 
Apache Camel workshop at BarcelonaJUG in January 2014
Apache Camel workshop at BarcelonaJUG in January 2014Apache Camel workshop at BarcelonaJUG in January 2014
Apache Camel workshop at BarcelonaJUG in January 2014
 
Using Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivityUsing Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivity
 
Getting Started with Apache Camel - Devconf Conference - February 2013
Getting Started with Apache Camel - Devconf Conference - February 2013Getting Started with Apache Camel - Devconf Conference - February 2013
Getting Started with Apache Camel - Devconf Conference - February 2013
 
Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
Getting started with Apache Camel presentation at BarcelonaJUG, january 2014Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
 
Real World Rails Deployment
Real World Rails DeploymentReal World Rails Deployment
Real World Rails Deployment
 
What’s New in Rails 5.0?
What’s New in Rails 5.0?What’s New in Rails 5.0?
What’s New in Rails 5.0?
 
Getting started with Apache Camel - Javagruppen Copenhagen - April 2014
Getting started with Apache Camel - Javagruppen Copenhagen - April 2014Getting started with Apache Camel - Javagruppen Copenhagen - April 2014
Getting started with Apache Camel - Javagruppen Copenhagen - April 2014
 
SymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSkySymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSky
 
TorqueBox
TorqueBoxTorqueBox
TorqueBox
 
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
The Evolution of Airbnb's Frontend
The Evolution of Airbnb's FrontendThe Evolution of Airbnb's Frontend
The Evolution of Airbnb's Frontend
 
Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018
 
Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)
 
SOA on Rails
SOA on RailsSOA on Rails
SOA on Rails
 
Padrino - the Godfather of Sinatra
Padrino - the Godfather of SinatraPadrino - the Godfather of Sinatra
Padrino - the Godfather of Sinatra
 

Destaque

Perl%20SYLLABUS%20PB
Perl%20SYLLABUS%20PBPerl%20SYLLABUS%20PB
Perl%20SYLLABUS%20PB
tutorialsruby
 
indesign_cs3_scripting_tutorial
indesign_cs3_scripting_tutorialindesign_cs3_scripting_tutorial
indesign_cs3_scripting_tutorial
tutorialsruby
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
tutorialsruby
 
Java2网络协议技术内幕
Java2网络协议技术内幕Java2网络协议技术内幕
Java2网络协议技术内幕
yiditushe
 
Beware Of Meditation Dr Shriniwas Kashalikar
Beware Of Meditation Dr Shriniwas KashalikarBeware Of Meditation Dr Shriniwas Kashalikar
Beware Of Meditation Dr Shriniwas Kashalikar
drsolapurkar
 
由一个简单的程序谈起--之一
由一个简单的程序谈起--之一由一个简单的程序谈起--之一
由一个简单的程序谈起--之一
yiditushe
 
Dr. Kashalikar Shriniwas
Dr. Kashalikar ShriniwasDr. Kashalikar Shriniwas
Dr. Kashalikar Shriniwas
drsolapurkar
 
CreatingHairwithMayanHair_CertificateOfCompletion
CreatingHairwithMayanHair_CertificateOfCompletionCreatingHairwithMayanHair_CertificateOfCompletion
CreatingHairwithMayanHair_CertificateOfCompletion
Veronica Chiaravalli
 
Biodata Cv Dr. Shriniwas Kashalikar
Biodata Cv Dr. Shriniwas KashalikarBiodata Cv Dr. Shriniwas Kashalikar
Biodata Cv Dr. Shriniwas Kashalikar
drsolapurkar
 
Helpless Dr. Shriniwas Kashalikar
Helpless      Dr. Shriniwas KashalikarHelpless      Dr. Shriniwas Kashalikar
Helpless Dr. Shriniwas Kashalikar
drsolapurkar
 

Destaque (20)

D3_Tuto_GD
D3_Tuto_GDD3_Tuto_GD
D3_Tuto_GD
 
Perl%20SYLLABUS%20PB
Perl%20SYLLABUS%20PBPerl%20SYLLABUS%20PB
Perl%20SYLLABUS%20PB
 
indesign_cs3_scripting_tutorial
indesign_cs3_scripting_tutorialindesign_cs3_scripting_tutorial
indesign_cs3_scripting_tutorial
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
 
Introduction to D3
Introduction to D3Introduction to D3
Introduction to D3
 
A Quick and Dirty D3.js Tutorial
A Quick and Dirty D3.js TutorialA Quick and Dirty D3.js Tutorial
A Quick and Dirty D3.js Tutorial
 
Data visualisation with D3
Data visualisation with D3Data visualisation with D3
Data visualisation with D3
 
Java2网络协议技术内幕
Java2网络协议技术内幕Java2网络协议技术内幕
Java2网络协议技术内幕
 
Freedom to perform in government- case of TePP
Freedom to perform in government- case of TePPFreedom to perform in government- case of TePP
Freedom to perform in government- case of TePP
 
Beware Of Meditation Dr Shriniwas Kashalikar
Beware Of Meditation Dr Shriniwas KashalikarBeware Of Meditation Dr Shriniwas Kashalikar
Beware Of Meditation Dr Shriniwas Kashalikar
 
由一个简单的程序谈起--之一
由一个简单的程序谈起--之一由一个简单的程序谈起--之一
由一个简单的程序谈起--之一
 
phptut2
phptut2phptut2
phptut2
 
newperl5
newperl5newperl5
newperl5
 
Church Giving: The rules have changed
Church Giving: The rules have changedChurch Giving: The rules have changed
Church Giving: The rules have changed
 
Dr. Kashalikar Shriniwas
Dr. Kashalikar ShriniwasDr. Kashalikar Shriniwas
Dr. Kashalikar Shriniwas
 
Dojo Basics Js UserGroup Chicago
Dojo Basics Js UserGroup ChicagoDojo Basics Js UserGroup Chicago
Dojo Basics Js UserGroup Chicago
 
11 16 Everlasting Flowers
11 16 Everlasting Flowers11 16 Everlasting Flowers
11 16 Everlasting Flowers
 
CreatingHairwithMayanHair_CertificateOfCompletion
CreatingHairwithMayanHair_CertificateOfCompletionCreatingHairwithMayanHair_CertificateOfCompletion
CreatingHairwithMayanHair_CertificateOfCompletion
 
Biodata Cv Dr. Shriniwas Kashalikar
Biodata Cv Dr. Shriniwas KashalikarBiodata Cv Dr. Shriniwas Kashalikar
Biodata Cv Dr. Shriniwas Kashalikar
 
Helpless Dr. Shriniwas Kashalikar
Helpless      Dr. Shriniwas KashalikarHelpless      Dr. Shriniwas Kashalikar
Helpless Dr. Shriniwas Kashalikar
 

Semelhante a Avik_RailsTutorial

Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
David Delabassee
 

Semelhante a Avik_RailsTutorial (20)

Node.js Workshop
Node.js WorkshopNode.js Workshop
Node.js Workshop
 
Web sphere administration
Web sphere administrationWeb sphere administration
Web sphere administration
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
COP_RoR_QuArrk_Session_Oct_2022.pptx
COP_RoR_QuArrk_Session_Oct_2022.pptxCOP_RoR_QuArrk_Session_Oct_2022.pptx
COP_RoR_QuArrk_Session_Oct_2022.pptx
 
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)Is Enterprise Java Still Relevant (JavaOne 2015 session)
Is Enterprise Java Still Relevant (JavaOne 2015 session)
 
From Java to Ruby...and Back
From Java to Ruby...and BackFrom Java to Ruby...and Back
From Java to Ruby...and Back
 
Wicket Presentation @ AlphaCSP Java Web Frameworks Playoff 2008
Wicket Presentation @ AlphaCSP Java Web Frameworks Playoff 2008Wicket Presentation @ AlphaCSP Java Web Frameworks Playoff 2008
Wicket Presentation @ AlphaCSP Java Web Frameworks Playoff 2008
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
Flex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & WebservicesFlex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & Webservices
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Practical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobusPractical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobus
 
Web Apps atop a Content Repository
Web Apps atop a Content RepositoryWeb Apps atop a Content Repository
Web Apps atop a Content Repository
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 

Mais de tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 

Mais de tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Último

Último (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Avik_RailsTutorial

  • 1. Ruby On Rails A brief tutorial Avik Sengupta © 2005 Avik Sengupta. All Rights Reserved. 1
  • 2. Agenda Introduce Rails via these slides Show me the code! Code up a Rails application from scratch (This tutorial assumes a very limited knowledge of Ruby ... did you attend Premshree or Yogi's talks?) © 2005 Avik Sengupta. All Rights Reserved. 2
  • 3. Rails “Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups” Rails Creator - David H. Hansson © 2005 Avik Sengupta. All Rights Reserved. 3
  • 4. What is Rails Full Stack Model (Object Relation Mapping) – Active Record View – Action View +ERb Controller – Action Controller Mail integration – ActionMailer Web Services – Action Web services ..therefore, all layers work seamlessly (DRY) © 2005 Avik Sengupta. All Rights Reserved. 4
  • 5. The Rails request cycle © 2005 Avik Sengupta. All Rights Reserved. 5
  • 6. Active Record Automated mappings : Given this table.. CREATE TABLE entries ( id int(11) NOT NULL auto_increment, name varchar(255), comments varchar(255), PRIMARY KEY (id) ); © 2005 Avik Sengupta. All Rights Reserved. 6
  • 7. Active Record You can do class Entry < ActiveRecord::Base # nothing here! end entry = Entry.new entry.name = "John" entry.comments = "What a great Web site!" entry.save entry = Entry.find(1) puts entry.name # output: "John" © 2005 Avik Sengupta. All Rights Reserved. 7
  • 8. Active Record Associations only need to be declared class Firm < ActiveRecord::Base has_many :clients has_one :account belongs_to :conglomerate end firm.clients.each do |client| {...} firm.has_clients? © 2005 Avik Sengupta. All Rights Reserved. 8
  • 9. Action Controller Action Controller Handles the entire request cycle Actions grouped into Controller Each action is method in the controller class Instance variables are passed to the view class GuestbookController < ActionController::Base def index @entries = Entries.find_all end end © 2005 Avik Sengupta. All Rights Reserved. 9
  • 10. Views Templates in Embedded Ruby (like JSP or ASP) Expression language is Pure Ruby Helper classes provide common functionality for strings, dates, forms etc. <html> <body> <h1>Cookbook</h1> <% for e in @entries %> <p><%= e.name %>: <%= e.description %></p> <% end %> </body> </html> © 2005 Avik Sengupta. All Rights Reserved. 10
  • 11. Action Mailer Integrate e-mails from Rails applications # send email with attachment def report_notification(recipient) recipients recipient.email_address_with_name subject "Your Report" from "owner@app.com" attachment :content_type => "image/gif", :body => File.read("logo.gif") attachment "image/gif" do |a| a.body = generate_chart() end end © 2005 Avik Sengupta. All Rights Reserved. 11
  • 12. Action Web Services Server side WS and XML-RPC protocols Export API's as Web Services © 2005 Avik Sengupta. All Rights Reserved. 12
  • 13. Demo Build a web based cookbook, live, from scratch. For reference, some of the steps we will go through are illustrated in the following slides. However, for the tutorial, we will write the code directly ourselves! © 2005 Avik Sengupta. All Rights Reserved. 13
  • 14. Downloads and Installation Install Ruby On Windows you can use the One-Click installer. For other platforms, use your platform packages Install RubyGems (a ruby package management system) Download from http://rubyforge.org/projects/rubygems/ Unpack the downloaded archive and in that directory run the command: ruby install.rb Install Rails From the command line execute: From the command line execute: gem install rails © 2005 Avik Sengupta. All Rights Reserved. 14
  • 15. First Steps Generate Application Structure $ rails cookbook Create Database Generate Models and Controllers Use scaffold to create basic app © 2005 Avik Sengupta. All Rights Reserved. 15
  • 16. More code... Flesh out the application Create Views Use partials and helpers Use layouts Implement Validations Model complex relationships © 2005 Avik Sengupta. All Rights Reserved. 16
  • 17. Advanced Stuff Callbacks Transactions Caching Rails makes AJAX easy Go to Vamsee Kankala's tutorial Rails makes testing easy Again, go to Vamsee's tutorial © 2005 Avik Sengupta. All Rights Reserved. 17
  • 18. Questions? Curiosity killed the cat... or did it? © 2005 Avik Sengupta. All Rights Reserved. 18
  • 19. Credits This presentation inspired by Rolling with Rails (OnLamp) by Curt Hibbs http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html Presentation at Chicago ACM by Ryan Platte and John W. Long http://www.ruby-doc.org/docs/Get to the Point Development with Ru © 2005 Avik Sengupta. All Rights Reserved. 19
  • 20. More Info Main Ruby Site http://www.ruby-lang.org One Click Ruby Installer for Windows http://rubyinstaller.rubyforge rubyforge.org Main Rails Site http://www.rubyonrails.org This presentation http://www.sengupta.net/talks/ © 2005 Avik Sengupta. All Rights Reserved. 20