Ride on the Fast Track of Web with Ruby on Rails- Part 2
-
Upload
akm-ashrafuzzaman -
Category
Technology
-
view
1.791 -
download
1
description
Transcript of Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ruby on RailsTechnology
MVC
ModelController
View
MVC
●
ControllerModel
●View
MVC
RESTful routing
RESTRepresentational state transfer
RESTful routingHTTP Verb Path Action
GET /posts index
GET /posts/new new
POST /posts create
GET /posts/:id show
GET /posts/:id/edit edit
PUT /posts/:id update
DELETE /posts/:id destroy
RESTful routing
resources :posts
Configuration
Model
class Post < ActiveRecord::Base validates :title, :presence => trueend
Controller
class PostController < ApplicationController
def index @posts = Post.all logger.info 'Post loaded' end
end
View<h1>Listing posts</h1> <table> <tr> <th>Name</th> <th>Title</th> <th>Content</th> </tr> <% @posts.each do |post| %> <tr> <td><%= post.name %></td> <td><%= post.title %></td> <td><%= post.content %></td> </tr><% end %></table>
Technology● Unobtrusive Javascript● Built in jquery and prototype● Coffeescript● HTML 5● Haml / Sass● Internationalization● Data migration● Dependency management
PerformanceImprove performance● Caching● Asset pipeline
Test performance
Improve performanceCaching
- Page caching
- Action caching
- Fragment Caching
● Reference● http://guides.rubyonrails.org/caching_with_rails.html
Configuration
config.action_controller.perform_caching = true
Page caching
class ProductsController < ActionController caches_page :index def index @products = Products.all end def create expire_page :action => :index endend
Page caching
Appropriate for● Public pages● Pages that do not
change often
Not for● Pages that require
authentication● Pages that changes
often
Action caching
class ProductsController < ActionController before_filter :authenticate caches_action :index def index @products = Product.all end def create expire_action :action => :index endend
Fragment caching
<% cache('all_available_products') do %> All available products: <% Product.all.each do |p| %> <%= link_to p.name, product_url(p) %> <% end %><% end %>
expire_fragment('all_available_products')
Expire cach
In template
Caching
Use Sweepers to expire cache
Sweepers to expire caching
class ProductSweeper < ActionController::Caching::Sweeper observe Product # This sweeper is going to keep an eye on the Product model
def after_create(product) expire_cache_for(product) end def after_update(product) expire_cache_for(product) end def after_destroy(product) expire_cache_for(product) end private def expire_cache_for(product) expire_page(:controller => 'products', :action => 'index') expire_fragment('all_available_products') endend
Sweepers to expire caching
class ProductsController < ActionController before_filter :authenticate caches_action :index cache_sweeper :product_sweeper def index @products = Product.all end end
Configure caching
ActionController::Base.cache_store = :memory_storeor
ActionController::Base.cache_store = :file_store, "/path/to/cache/directory"or
ActionController::Base.cache_store = :mem_cache_store, "cache-1.example.com"
Test performance● Benchmarking web site performance●
http://guides.rubyonrails.org/performance_testing.html
class HomepageTest < ActionDispatch::PerformanceTest # Replace this with your real tests. def test_homepage get '/' endend
Improve performance
Asset pipeline ???
● Reference● http://guides.rubyonrails.org/asset_pipeline.html
Asset pipelining
Asset pipelining
Assets
Asset pipelining
Com
p ile
Assets
Compiled asset
Asset pipelining
Assets
Compiled asset
Usage
app/assets/javascripts/application.jsapp/assets/javascripts/home.jsapp/assets/javascripts/menu.jsapp/assets/javascripts/slider.js
Asset pipelining
Assets
Compiled asset
UsageIn application.js add the following,
//= require home//= require moovinator//= require slider
Asset pipelining
Assets
Compiled asset
UsageAdd application.js in you template as follows,
<%= javascript_include_tag "application" %>
Deployment
Assets
Compiled asset● Reference● https://github.com/capistrano/capistrano/wiki
● Using capistrano magic●
● cap deploy
Learn Rails
Assets
Compiled asset
● Guides● http://guides.rubyonrails.org●
● Video casts● http://railscasts.com● http://rubyonrails.org/screencasts
A.K.M. Ashrafuzzaman Sr. Technology Analyst,
Orbund
www.ashrafuzzaman.comjitu-blog.blogspot.comwww.orbund.com
http://www.softexpo.com.bd/technical_details.php?id=9To see 1st part of this presentation visit:http://www.slideshare.net/fuadcse/ride-on-the-fast-track-of-web-with-ruby-on-rails-part-1
Presented At