Td Mxc Rubyrails Shin

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Td Mxc Rubyrails Shin as PDF for free.

More details

  • Words: 1,359
  • Pages: 49
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 webserver 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

Related Documents

Td Mxc Rubyrails Shin
October 2019 38
Td Mxc Perftuninggc Shin
October 2019 21
Td Mxc Jmaki Chen
October 2019 39
Td Mxc Python Wierzbiki
October 2019 35
Td Mxc Soa Reddy
October 2019 34