SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Rapid Web
Application
Development using
Ruby on Rails
●
 Sang Shin
●Sun Microsystems, Inc.

●
 javapassion.com

                          1
You can try all the demos
yourself!

Join “Ruby, JRuby, Rails”
free online course!

www.javapassion.com/rubyonrails
Topics
•   What is and Why Ruby on Rails (Rails)?
•   Rails Basics
•   Step by step for building “Hello World” Rails application
•   ActiveRecord
•   ActionController
•   ActionView
•   Deployment




                                                                3
What is and Why
Ruby on Rails (RoR)?
What Is “Ruby on Rails”?
• A full-stack MVC web development framework
• Written in Ruby
• First released in 2004 by
  David Heinemeier Hansson
• Gaining popularity




                                               5
“Ruby on Rails” Principles
• Convention over configuration
  > Why punish the common cases?
  > Encourages standard practices
  > Everything simpler and smaller
• Don’t Repeat Yourself (DRY)
  > Repetitive code is harmful to adaptability
• Agile development environment
  > No recompile, deploy, restart cycles
  > Simple tools to generate code quickly
  > Testing built into the framework
                                                 6
Rails Basics
“Ruby on Rails” MVC




                      source: http://www.ilug-cal.org   8
Step By Step Process
of Building “Hello World”
Rails Application
Steps to Follow
1.Create “Ruby on Rails” project
  > IDE generate necessary directories and files
2.Create and populate database tables
3.Create Models (through Rails Generator)
  > Migrate database
4.Create Controllers (through Rails Generator)
5.Create Views
6.Set URL Routing
  > Map URL to controller and action
                                                   10
Demo:
    Building “Hello World”
Rails Application Step by Step.

 http://www.javapassion.com/handsonlabs/rails_basics/#Exercise_1




                                                                   11
Key Learning Points
• How to create a Rails project
    > Rails application directory structure
    > Concept of environments - development, test, and
      production
•   How to create a database using Rake
•   How to create and populate tables using Migration
•   How to create a model using Generator
•   How to use Rails console

                                                         12
Key Learning Points
• How to create a controller using Generator
  > How to add actions to a controller
• How to create a related view
  > How a controller and a view are related
  > How to create instance variables in an action and they
    are used in a view
• How to set up a routing
• How to trouble-shoot a problem

                                                             13
Demo:
How to create an input form.

http://www.javapassion.com/handsonlabs/rails_basics/#Exercise_4




                                                                  14
Key Learning Points
• How to use form_tag and text_field helpers to
  create an input form
• How input form fields are accessed in an action
  method through params




                                                    15
Scaffolding
What is Scaffolding?
• Scaffolding is a way to quickly create a CRUD
  application
  > Rails framework generates a set of actions for listing,
    showing, creating, updating, and destroying objects of
    the class
  > These standardized actions come with both controller
    logic and default templates that through introspection
    already know which fields to display and which input
    types to use
• Supports RESTful view of the a Model
                                                              17
Demo:
Creating a Rails Application
     using Scaffolding

http://www.javapassion.com/handsonlabs/rails_scaffold/#Exercise_1




                                                                    18
Key Learning Points
• How to perform scaffolding using Generator
• What action methods are created through
  scaffolding
• What templates are created through scaffolding




                                                   19
ActiveRecord
Basics
ActiveRecord Basics
• Model (from MVC)
• Object Relation Mapping library
  > A table maps to a Ruby class (Model)
  > A row maps to a Ruby object
  > Columns map to attributes
• Database agnostic
• Your model class extends ActiveRecord::Base


                                                21
ActiveRecord Class
• Your model class extends ActiveRecord::Base
  class User < ActiveRecord::Base
  end
• You model class contain domain logic
  class User < ActiveRecord::Base
     def self.authenticate_safely(user_name, password)
      find(:first, :conditions => [ "user_name = ? AND
     password = ?", user_name, password ])
     end
  end                                                    22
Naming Conventions
• Table names are plural and class names are
  singular
  > posts (table), Post (class)
  > students (table), Student (class)
  > people (table), Person (class)
• Tables contain a column named id




                                               23
Find: Examples
• find by id
  Person.find(1)     # returns the object for ID = 1
  Person.find(1, 2, 6) # returns an array for objects with IDs in (1, 2, 6)
• find first
  Person.find(:first) # returns the first object fetched by SELECT * FROM peop
  Person.find(:first, :conditions => [ "user_name = ?", user_name])
  Person.find(:first, :order => "created_on DESC", :offset => 5)




                                                                              24
Dynamic attribute-based finders
• Dynamic attribute-based finders are a cleaner way
  of getting (and/or creating) objects by simple
  queries without turning to SQL
• They work by appending the name of an attribute to
  find_by_ or find_all_by_, so you get finders like
  > Person.find_by_user_name(user_name)
     > Person.find(:first, :conditions => ["user_name = ?",
       user_name])
  > Person.find_all_by_last_name(last_name)
     > Person.find(:all, :conditions => ["last_name = ?", last_name])
  > Payment.find_by_transaction_id
                                                                        25
ActiveRecord
Migration
ActiveRecord Migration
• Provides version control of database schema
  > Adding a new field to a table
  > Removing a field from an existing table
  > Changing the name of the column
  > Creating a new table
• Each change in schema is represented in pure
  Ruby code



                                                 27
Example: Migration
• Add a boolean flag to the accounts table and remove it
  again, if you’re backing out of the migration.

  class AddSsl < ActiveRecord::Migration
     def self.up
      add_column :accounts, :ssl_enabled, :boolean, :default => 1
     end

    def self.down
     remove_column :accounts, :ssl_enabled
    end
   end                                                       28
Demo:
How to add a field to a table
     using Migration

http://www.javapassion.com/handsonlabs/rails_scaffold/#Exercise_2




                                                                    29
Key Learning Points
• How to add a new field to a table using Migration
• How to create a migration file using Generator
• How to see a log file




                                                      30
ActiveRecord
Validation
ActiveRecord::Validations
• Validation methods
  class User < ActiveRecord::Base
   validates_presence_of :username, :level
   validates_uniqueness_of :username
   validates_oak_id :username
   validates_length_of :username, :maximum => 3, :allow_nil
   validates_numericality_of :value, :on => :create
  end


                                                          32
Validation




             33
Demo:
                 Validation
http://www.javapassion.com/handsonlabs/rails_scaffold/#2.4




                                                             34
ActiveRecord::
Associations
Associations
• Associations are a set of macro-like class methods
  for tying objects together through foreign keys.
• They express relationships like "Project has one
  Project Manager" or "Project belongs to a Portfolio".
• Each macro adds a number of methods to the class
  which are specialized according to the collection or
  association symbol and the options hash.
• Cardinality
  > One-to-one, One-to-many, Many-to-many
                                                          36
One-to-many
• Use has_many in the base, and belongs_to in the
  associated model

   class Manager < ActiveRecord::Base
    has_many :employees
   end
   class Employee < ActiveRecord::Base
    belongs_to :manager # foreign key - manager_id
   end
                                                     37
Demo:
               Association
http://www.javapassion.com/handsonlabs/rails_activerecord/




                                                             38
ActionController
Basics
ActionController
• Controller is made up of one or more actions that are
  executed on request and then either render a template or
  redirect to another action
• An action is defined as a public method on the controller,
  which will automatically be made accessible to the web-
  server through Rails Routes
• Actions, by default, render a template in the app/views
  directory corresponding to the name of the controller and
  action after executing code in the action.


                                                               40
ActionController
• For example, the index action of the GuestBookController would
  render the template app/views/guestbook/index.erb by default
  after populating the @entries instance variable.

  class GuestBookController < ActionController::Base
     def index
      @entries = Entry.find(:all)
     end

    def sign
     Entry.create(params[:entry])
     redirect_to :action => "index"
    end
   end
                                                               41
Deployment
Web Servers
• By default, Rails will try to use Mongrel and lighttpd
  if they are installed, otherwise Rails will use
  WEBrick, the webserver that ships with Ruby.
• Java Server integration
  > Goldspike
  > GlassFish V3




                                                           43
Goldspike
• Rails Plugin
• Packages Rails application as WAR
• WAR contains a servlet that translates data from the
  servlet request to the Rails dispatcher
• Works for any servlet container
• rake war:standalone:create



                                                     44
Demo:
        Deployment through
            Goldspike

http://www.javapassion.com/handsonlabs/rails_deploy/#Exercise_1




                                                                  45
JRuby on Rails
Why “JRuby on Rails”
over “Ruby on Rails”?
• Java technology production environments pervasive
  > Easier to switch framework vs. whole architecture
  > Lower barrier to entry
• Integration with Java technology libraries,
  legacy services
• No need to leave Java technology servers, libraries,
  reliability
• Deployment to Java application servers
                                                         47
“JRuby on Rails”: Java EE Platform
• Pool database connections
• Access any Java Naming and Directory Interface™
  (J.N.D.I.) API resource
• Access any Java EE platform TLA:
  > Java Persistence API (JPA)
  > Java Management Extensions (JMX™)
  > Enterprise JavaBeans™ (EJB™)
  > Java Message Service (JMS) API
  > SOAP/WSDL/SOA
                                                    48
Rapid Web
Application
Development using
Ruby on Rails
●
 Sang Shin
●Sun Microsystems, Inc.

●
 javapassion.com

                          49

Más contenido relacionado

La actualidad más candente

Ajax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsAjax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsTse-Ching Ho
 
jQuery and_drupal
jQuery and_drupaljQuery and_drupal
jQuery and_drupalBlackCatWeb
 
Demystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsDemystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsMichael Miles
 
Building Web Interface On Rails
Building Web Interface On RailsBuilding Web Interface On Rails
Building Web Interface On RailsWen-Tien Chang
 
Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8Michael Miles
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Ivan Chepurnyi
 
Drupal Javascript for developers
Drupal Javascript for developersDrupal Javascript for developers
Drupal Javascript for developersDream Production AG
 
Apache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei BatisApache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei Batisday
 
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8Michael Miles
 
Introduction to backbone presentation
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentationBrian Hogg
 
Class-based views with Django
Class-based views with DjangoClass-based views with Django
Class-based views with DjangoSimon Willison
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsAlessandro Molina
 
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsDrupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsMichael Miles
 
Михаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAXМихаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAXDrupalSib
 

La actualidad más candente (19)

Advanced Django
Advanced DjangoAdvanced Django
Advanced Django
 
Ajax nested form and ajax upload in rails
Ajax nested form and ajax upload in railsAjax nested form and ajax upload in rails
Ajax nested form and ajax upload in rails
 
jQuery and_drupal
jQuery and_drupaljQuery and_drupal
jQuery and_drupal
 
Demystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsDemystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback Commands
 
Building Web Interface On Rails
Building Web Interface On RailsBuilding Web Interface On Rails
Building Web Interface On Rails
 
Alfredo-PUMEX
Alfredo-PUMEXAlfredo-PUMEX
Alfredo-PUMEX
 
Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)
 
Drupal Javascript for developers
Drupal Javascript for developersDrupal Javascript for developers
Drupal Javascript for developers
 
Apache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei BatisApache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei Batis
 
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
 
Introduction to backbone presentation
Introduction to backbone presentationIntroduction to backbone presentation
Introduction to backbone presentation
 
Class-based views with Django
Class-based views with DjangoClass-based views with Django
Class-based views with Django
 
Django
DjangoDjango
Django
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable Applications
 
Drupal 8 Services
Drupal 8 ServicesDrupal 8 Services
Drupal 8 Services
 
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsDrupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
 
Zend
ZendZend
Zend
 
Михаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAXМихаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAX
 

Destacado (7)

e6
e6e6
e6
 
dr_1
dr_1dr_1
dr_1
 
fms9_cwp_php_en
fms9_cwp_php_enfms9_cwp_php_en
fms9_cwp_php_en
 
INFS730
INFS730INFS730
INFS730
 
FW: ARTE C ON LÀPICES
FW: ARTE C ON LÀPICES FW: ARTE C ON LÀPICES
FW: ARTE C ON LÀPICES
 
Problemas act 2.1
Problemas act 2.1Problemas act 2.1
Problemas act 2.1
 
Alfredo-PUMEX
Alfredo-PUMEXAlfredo-PUMEX
Alfredo-PUMEX
 

Similar a Rapid Web App Dev using Ruby on Rails

Jasig rubyon rails
Jasig rubyon railsJasig rubyon rails
Jasig rubyon rails_zaMmer_
 
Jasig rubyon rails
Jasig rubyon railsJasig rubyon rails
Jasig rubyon rails_zaMmer_
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Nilesh Panchal
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best PracticesDavid Keener
 
Asp.net mvc presentation by Nitin Sawant
Asp.net mvc presentation by Nitin SawantAsp.net mvc presentation by Nitin Sawant
Asp.net mvc presentation by Nitin SawantNitin Sawant
 
Apache Cayenne for WO Devs
Apache Cayenne for WO DevsApache Cayenne for WO Devs
Apache Cayenne for WO DevsWO Community
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
 
2011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 52011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 5Daniel Fisher
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Introduction to Laravel Framework (5.2)
Introduction to Laravel Framework (5.2)Introduction to Laravel Framework (5.2)
Introduction to Laravel Framework (5.2)Viral Solani
 
Building strong foundations apex enterprise patterns
Building strong foundations apex enterprise patternsBuilding strong foundations apex enterprise patterns
Building strong foundations apex enterprise patternsandyinthecloud
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpChalermpon Areepong
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to railsEvgeniy Hinyuk
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukPivorak MeetUp
 

Similar a Rapid Web App Dev using Ruby on Rails (20)

Jasig rubyon rails
Jasig rubyon railsJasig rubyon rails
Jasig rubyon rails
 
Jasig rubyon rails
Jasig rubyon railsJasig rubyon rails
Jasig rubyon rails
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
 
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best Practices
 
Asp.net mvc presentation by Nitin Sawant
Asp.net mvc presentation by Nitin SawantAsp.net mvc presentation by Nitin Sawant
Asp.net mvc presentation by Nitin Sawant
 
Apache Cayenne for WO Devs
Apache Cayenne for WO DevsApache Cayenne for WO Devs
Apache Cayenne for WO Devs
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
2011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 52011 NetUG HH: ASP.NET MVC & HTML 5
2011 NetUG HH: ASP.NET MVC & HTML 5
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Codeinator
CodeinatorCodeinator
Codeinator
 
Introduction to Laravel Framework (5.2)
Introduction to Laravel Framework (5.2)Introduction to Laravel Framework (5.2)
Introduction to Laravel Framework (5.2)
 
12 Introduction to Rails
12 Introduction to Rails12 Introduction to Rails
12 Introduction to Rails
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
Building strong foundations apex enterprise patterns
Building strong foundations apex enterprise patternsBuilding strong foundations apex enterprise patterns
Building strong foundations apex enterprise patterns
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to rails
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy Hinyuk
 
End_to_End_DevOps.pptx
End_to_End_DevOps.pptxEnd_to_End_DevOps.pptx
End_to_End_DevOps.pptx
 

Más 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 – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 

Más 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

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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 productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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.pptxHampshireHUG
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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 2024Rafal Los
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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 MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

Rapid Web App Dev using Ruby on Rails

  • 1. Rapid Web Application Development using Ruby on Rails ● Sang Shin ●Sun Microsystems, Inc. ● javapassion.com 1
  • 2. You can try all the demos yourself! Join “Ruby, JRuby, Rails” free online course! www.javapassion.com/rubyonrails
  • 3. Topics • What is and Why Ruby on Rails (Rails)? • Rails Basics • Step by step for building “Hello World” Rails application • ActiveRecord • ActionController • ActionView • Deployment 3
  • 4. What is and Why Ruby on Rails (RoR)?
  • 5. What Is “Ruby on Rails”? • A full-stack MVC web development framework • Written in Ruby • First released in 2004 by David Heinemeier Hansson • Gaining popularity 5
  • 6. “Ruby on Rails” Principles • Convention over configuration > Why punish the common cases? > Encourages standard practices > Everything simpler and smaller • Don’t Repeat Yourself (DRY) > Repetitive code is harmful to adaptability • Agile development environment > No recompile, deploy, restart cycles > Simple tools to generate code quickly > Testing built into the framework 6
  • 8. “Ruby on Rails” MVC source: http://www.ilug-cal.org 8
  • 9. Step By Step Process of Building “Hello World” Rails Application
  • 10. Steps to Follow 1.Create “Ruby on Rails” project > IDE generate necessary directories and files 2.Create and populate database tables 3.Create Models (through Rails Generator) > Migrate database 4.Create Controllers (through Rails Generator) 5.Create Views 6.Set URL Routing > Map URL to controller and action 10
  • 11. Demo: Building “Hello World” Rails Application Step by Step. http://www.javapassion.com/handsonlabs/rails_basics/#Exercise_1 11
  • 12. Key Learning Points • How to create a Rails project > Rails application directory structure > Concept of environments - development, test, and production • How to create a database using Rake • How to create and populate tables using Migration • How to create a model using Generator • How to use Rails console 12
  • 13. Key Learning Points • How to create a controller using Generator > How to add actions to a controller • How to create a related view > How a controller and a view are related > How to create instance variables in an action and they are used in a view • How to set up a routing • How to trouble-shoot a problem 13
  • 14. Demo: How to create an input form. http://www.javapassion.com/handsonlabs/rails_basics/#Exercise_4 14
  • 15. Key Learning Points • How to use form_tag and text_field helpers to create an input form • How input form fields are accessed in an action method through params 15
  • 17. What is Scaffolding? • Scaffolding is a way to quickly create a CRUD application > Rails framework generates a set of actions for listing, showing, creating, updating, and destroying objects of the class > These standardized actions come with both controller logic and default templates that through introspection already know which fields to display and which input types to use • Supports RESTful view of the a Model 17
  • 18. Demo: Creating a Rails Application using Scaffolding http://www.javapassion.com/handsonlabs/rails_scaffold/#Exercise_1 18
  • 19. Key Learning Points • How to perform scaffolding using Generator • What action methods are created through scaffolding • What templates are created through scaffolding 19
  • 21. ActiveRecord Basics • Model (from MVC) • Object Relation Mapping library > A table maps to a Ruby class (Model) > A row maps to a Ruby object > Columns map to attributes • Database agnostic • Your model class extends ActiveRecord::Base 21
  • 22. ActiveRecord Class • Your model class extends ActiveRecord::Base class User < ActiveRecord::Base end • You model class contain domain logic class User < ActiveRecord::Base def self.authenticate_safely(user_name, password) find(:first, :conditions => [ "user_name = ? AND password = ?", user_name, password ]) end end 22
  • 23. Naming Conventions • Table names are plural and class names are singular > posts (table), Post (class) > students (table), Student (class) > people (table), Person (class) • Tables contain a column named id 23
  • 24. Find: Examples • find by id Person.find(1) # returns the object for ID = 1 Person.find(1, 2, 6) # returns an array for objects with IDs in (1, 2, 6) • find first Person.find(:first) # returns the first object fetched by SELECT * FROM peop Person.find(:first, :conditions => [ "user_name = ?", user_name]) Person.find(:first, :order => "created_on DESC", :offset => 5) 24
  • 25. Dynamic attribute-based finders • Dynamic attribute-based finders are a cleaner way of getting (and/or creating) objects by simple queries without turning to SQL • They work by appending the name of an attribute to find_by_ or find_all_by_, so you get finders like > Person.find_by_user_name(user_name) > Person.find(:first, :conditions => ["user_name = ?", user_name]) > Person.find_all_by_last_name(last_name) > Person.find(:all, :conditions => ["last_name = ?", last_name]) > Payment.find_by_transaction_id 25
  • 27. ActiveRecord Migration • Provides version control of database schema > Adding a new field to a table > Removing a field from an existing table > Changing the name of the column > Creating a new table • Each change in schema is represented in pure Ruby code 27
  • 28. Example: Migration • Add a boolean flag to the accounts table and remove it again, if you’re backing out of the migration. class AddSsl < ActiveRecord::Migration def self.up add_column :accounts, :ssl_enabled, :boolean, :default => 1 end def self.down remove_column :accounts, :ssl_enabled end end 28
  • 29. Demo: How to add a field to a table using Migration http://www.javapassion.com/handsonlabs/rails_scaffold/#Exercise_2 29
  • 30. Key Learning Points • How to add a new field to a table using Migration • How to create a migration file using Generator • How to see a log file 30
  • 32. ActiveRecord::Validations • Validation methods class User < ActiveRecord::Base validates_presence_of :username, :level validates_uniqueness_of :username validates_oak_id :username validates_length_of :username, :maximum => 3, :allow_nil validates_numericality_of :value, :on => :create end 32
  • 34. Demo: Validation http://www.javapassion.com/handsonlabs/rails_scaffold/#2.4 34
  • 36. Associations • Associations are a set of macro-like class methods for tying objects together through foreign keys. • They express relationships like "Project has one Project Manager" or "Project belongs to a Portfolio". • Each macro adds a number of methods to the class which are specialized according to the collection or association symbol and the options hash. • Cardinality > One-to-one, One-to-many, Many-to-many 36
  • 37. One-to-many • Use has_many in the base, and belongs_to in the associated model class Manager < ActiveRecord::Base has_many :employees end class Employee < ActiveRecord::Base belongs_to :manager # foreign key - manager_id end 37
  • 38. Demo: Association http://www.javapassion.com/handsonlabs/rails_activerecord/ 38
  • 40. ActionController • Controller is made up of one or more actions that are executed on request and then either render a template or redirect to another action • An action is defined as a public method on the controller, which will automatically be made accessible to the web- server through Rails Routes • Actions, by default, render a template in the app/views directory corresponding to the name of the controller and action after executing code in the action. 40
  • 41. ActionController • For example, the index action of the GuestBookController would render the template app/views/guestbook/index.erb by default after populating the @entries instance variable. class GuestBookController < ActionController::Base def index @entries = Entry.find(:all) end def sign Entry.create(params[:entry]) redirect_to :action => "index" end end 41
  • 43. Web Servers • By default, Rails will try to use Mongrel and lighttpd if they are installed, otherwise Rails will use WEBrick, the webserver that ships with Ruby. • Java Server integration > Goldspike > GlassFish V3 43
  • 44. Goldspike • Rails Plugin • Packages Rails application as WAR • WAR contains a servlet that translates data from the servlet request to the Rails dispatcher • Works for any servlet container • rake war:standalone:create 44
  • 45. Demo: Deployment through Goldspike http://www.javapassion.com/handsonlabs/rails_deploy/#Exercise_1 45
  • 47. Why “JRuby on Rails” over “Ruby on Rails”? • Java technology production environments pervasive > Easier to switch framework vs. whole architecture > Lower barrier to entry • Integration with Java technology libraries, legacy services • No need to leave Java technology servers, libraries, reliability • Deployment to Java application servers 47
  • 48. “JRuby on Rails”: Java EE Platform • Pool database connections • Access any Java Naming and Directory Interface™ (J.N.D.I.) API resource • Access any Java EE platform TLA: > Java Persistence API (JPA) > Java Management Extensions (JMX™) > Enterprise JavaBeans™ (EJB™) > Java Message Service (JMS) API > SOAP/WSDL/SOA 48
  • 49. Rapid Web Application Development using Ruby on Rails ● Sang Shin ●Sun Microsystems, Inc. ● javapassion.com 49