SlideShare a Scribd company logo
1 of 78
Download to read offline
Advanced RESTful Rails
        Ben Scoļ¬eld
Constraints
Shall I compare thee to a summer's day?
Thou art more lovely and more temperate.
Rough winds do shake the darling buds of May,
And summer's lease hath all too short a date.
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm'd;
And every fair from fair some time declines,
By chance, or nature's changing course, untrimm'd;
But thy eternal summer shall not fade
...
app
   controllers
   helpers
   models
   views
config
   environments
   initializers
db
doc
lib
   tasks
log
public
   images
   javascripts
   stylesheets
script
   performance
   process
test
   fixtures
   functional
   integration
   unit
...
exists   app/models/
    exists   app/controllers/
    exists   app/helpers/
    create   app/views/users
    exists   test/functional/
    exists   test/unit/
dependency   model
    exists     app/models/
    exists     test/unit/
    exists     test/fixtures/
    create     app/models/user.rb
    create     test/unit/user_test.rb
    create     test/fixtures/users.yml
    create     db/migrate
    create     db/migrate/20080531002035_create_users.rb
    create   app/controllers/users_controller.rb
    create   test/functional/users_controller_test.rb
    create   app/helpers/users_helper.rb
     route   map.resources :users
REST
Audience Participation!
    who is building restful applications?
212,000 Results
How do I handle ...
Difļ¬cult
even for the pros
class UsersController < ApplicationController
  # ...

  def activate
    self.current_user = params[:activation_code].blank? ? false : # ...
    if logged_in? && !current_user.active?
      current_user.activate!
      flash[:notice] = quot;Signup complete!quot;
    end
    redirect_back_or_default('/')
  end

  def suspend
    @user.suspend!
    redirect_to users_path
  end

  def unsuspend
    @user.unsuspend!
    redirect_to users_path
  end

  def destroy
    @user.delete!
    redirect_to users_path
  end

  def purge
    @user.destroy
    redirect_to users_path



Restful Authentication
  end
end
What is REST?
Resources




            hey-helen - ļ¬‚ickr
Addressability




                 memestate - ļ¬‚ickr
Representations




                  stevedave - ļ¬‚ickr
Stateless*




             http://www1.ncdc.noaa.gov/pub/data/images/usa-avhrr.gif
Audience Participation!
         why care?
Process
tiptoe - ļ¬‚ickr
Domain


         ejpphoto - ļ¬‚ickr
Modeled


          kerim - ļ¬‚ickr
?
Identify
 resources
Select
methods to expose
Respect
the middleman
Simple
My Pull List
Releases
ActionController::Routing::Routes.draw do |map|
  map.releases 'releases/:year/:month/:day',
                :controller => 'items', :action => 'index'
end




class ItemsController < ApplicationController
  # release listing page; filters on year/month/day from params
  def index; end
end
Issues
ActionController::Routing::Routes.draw do |map|
  map.resources :issues
end




class IssuesController < ApplicationController
  # issue detail page
  def show; end
end
Series
ActionController::Routing::Routes.draw do |map|
  map.resources :titles
end




class TitlesController < ApplicationController
  # title detail page
  def show; end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :titles, :has_many => [:issues]
end




class IssuesController < ApplicationController
  # issue listing page; could be series page
  def index; end
end
Users
ActionController::Routing::Routes.draw do |map|
  map.resources :users
end




class UsersController < ApplicationController
  before_filter :require_login, :only => [:edit, :update]

  # edit account
  def edit; end

  # update account
  def update; end
end
Lists
ActionController::Routing::Routes.draw do |map|
  map.resources :users
end




class UsersController < ApplicationController
  # public view - pull list
  def show; end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :users, :has_many => [:titles]
end




class TitlesController < ApplicationController
  # public view - pull list, given a user_id
  def index; end
end
Advanced
Login*   mc - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resource :session
end




class SessionsController < ApplicationController
  # login form
  def new; end

  # login action
  def create; end

  # logout action
  def destroy; end
end
Homepage   seandreilinger - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resource :homepage
  map.root      :homepage
end




class HomepagesController < ApplicationController
  # homepage
  def show; end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :contents
  map.root :controller => ā€˜contentsā€™, :action => ā€˜showā€™,
            :page => ā€˜homepageā€™
end




class ContentsController < ApplicationController
  # static content
  def show
    # code to find a template named according to params[:page]
  end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :ads
  map.root      :ads
end




class AdsController < ApplicationController
  # ad index - the million dollar homepage
  def index; end
end
Dashboard   hel2005 - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resource :dashboard
end




class DashboardsController < ApplicationController
  before_filter :require_login

  # dashboard
  def show; end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :instruments
end




class InstrumentsController < ApplicationController
  before_filter :require_login

  # dashboard
  def index
    @instruments = current_user.instruments
  end
end
Preview   ashoe - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resources :posts, :has_one => [:preview]
end




class PreviewsController < ApplicationController
  def create
    @post = Post.find(params[:post_id])
    @post.attributes = params[:post]

    render :template => 'posts/show'
  end
end
ActionController::Routing::Routes.draw do |map|
  map.resources :posts
  map.resource :preview
end




class PreviewsController < ApplicationController
  def create
    @post = Post.new(params[:post])

    render :template => 'posts/show'
  end
end
Search   seandreilinger - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resources :posts
end




class PostsController < ApplicationController
  def index
    if params[:query].blank?
      @posts = Post.find(:all)
    else
      @posts = Post.find_for_query(params[:query])
    end
  end
end
ActionController::Routing::Routes.draw do |map|
  map.resource :search
end




class SearchesController < ApplicationController
  def show
    @results = Searcher.find(params[:query])
  end
end
Wizards   dunechaser - ļ¬‚ickr
/galleries/new
/restaurants/:id/photos/new
/restaurants/:id/photos/edit
ActionController::Routing::Routes.draw do |map| map.resources :galleries
  map.resources :galleries
  map.resources :restaurants, :has_many => [:photos]

  map.with_options :controller => 'photos' do |p|
    p.edit_restaurant_photos   'restaurants/:restaurant_id/photos/edit',
                               :action => 'edit'
    p.update_restaurant_photos 'restaurants/:restaurant_id/photos/update',
                               :action => 'update',
                               :conditions => {:method => :put}
  end
end
Collections   wooandy - ļ¬‚ickr
Web Services   josefstuefer - ļ¬‚ickr
Staff Directory


                                     Inventory
Search Application      Text
                     RESTful API
                                        HR


                                        etc.
RESTful API   Staff Directory


                     RESTful API     Inventory
Search Application   Text
                     RESTful API        HR


                     RESTful API        etc.
this slide left intentionally blank




Administration
ActionController::Routing::Routes.draw do |map|
  map.namespace :admin do |admin|
    admin.resources :invitations
    admin.resources :emails
    admin.resources :users
    admin.resources :features
  end
end
Audience Participation!
       what gives you ļ¬ts?
Rails, Speciļ¬cally
<%= link_to 'Delete', record, :method => 'delete',
                              :confirm => 'Are you sure?' %>




<a href=quot;/records/1quot; onclick=quot;if (confirm('Are you sure?')) { var f =
document.createElement('form'); f.style.display = 'none';
this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m =
document.createElement('input'); m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method'); m.setAttribute('value', 'delete');
f.appendChild(m);f.submit(); };return false;quot;>Delete</a>




Accessibility
ActionController::Routing::Routes.draw do |map|
  map.users 'users', :controller => ā€˜usersā€™, :action => ā€˜indexā€™
  map.users 'users', :controller => ā€˜usersā€™, :action => ā€˜createā€™
end




Hand-Written Routes
ActionController::Routing::Routes.draw do |map|
  map.resources :users

  # Install the default route as the lowest priority.
  map.connect ':controller/:action/:id'
end




Default Routing
Collections   wooandy - ļ¬‚ickr
ActionController::Routing::Routes.draw do |map|
  map.resources :records
end



class RecordsController < ApplicationController
  def index; end

  def show; end

  # ...
end




Mixed
ActionController::Routing::Routes.draw do |map|
  map.resource :record_list
  map.resources :records
end


class RecordListsController < ApplicationController
  def show; end

  # ...
end

class RecordsController < ApplicationController
  def show; end

  # ...
end




Separated
Audience Participation!
      whereā€™s rails bitten you?
Thanks!
ben scoļ¬eld
ben.scoļ¬eld@viget.com
http://www.viget.com/extend
http://www.culann.com

More Related Content

What's hot

AngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsAngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsMark
Ā 
Spring-training-in-bangalore
Spring-training-in-bangaloreSpring-training-in-bangalore
Spring-training-in-bangaloreTIB Academy
Ā 
GHC
GHCGHC
GHCAidIQ
Ā 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6Rory Gianni
Ā 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5Rory Gianni
Ā 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6Rory Gianni
Ā 
How routing works in angular js
How routing works in angular jsHow routing works in angular js
How routing works in angular jscodeandyou forums
Ā 
Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009bturnbull
Ā 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails enginesEnrico Teotti
Ā 
WebcampZG - Rails 4
WebcampZG - Rails 4WebcampZG - Rails 4
WebcampZG - Rails 4shnikola
Ā 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxWen-Tien Chang
Ā 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 Enrico Teotti
Ā 
Applications: A Series of States
Applications: A Series of StatesApplications: A Series of States
Applications: A Series of StatesTrek Glowacki
Ā 
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ć
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ćć€AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ć
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ćAmazon Web Services Japan
Ā 
ParisJS #10 : RequireJS
ParisJS #10 : RequireJSParisJS #10 : RequireJS
ParisJS #10 : RequireJSJulien CabanĆØs
Ā 
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Ø
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Øęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Ø
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·ØMasakuni Kato
Ā 
Ember - introduction
Ember - introductionEmber - introduction
Ember - introductionHarikrishnan C
Ā 
Node.js server-side rendering
Node.js server-side renderingNode.js server-side rendering
Node.js server-side renderingThe Software House
Ā 
ui-router and $state
ui-router and $stateui-router and $state
ui-router and $stategarbles
Ā 

What's hot (20)

AngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsAngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.js
Ā 
Spring-training-in-bangalore
Spring-training-in-bangaloreSpring-training-in-bangalore
Spring-training-in-bangalore
Ā 
GHC
GHCGHC
GHC
Ā 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
Ā 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6
Ā 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5
Ā 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6
Ā 
How routing works in angular js
How routing works in angular jsHow routing works in angular js
How routing works in angular js
Ā 
Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009
Ā 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails engines
Ā 
WebcampZG - Rails 4
WebcampZG - Rails 4WebcampZG - Rails 4
WebcampZG - Rails 4
Ā 
Ruby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 AjaxRuby on Rails : RESTful 和 Ajax
Ruby on Rails : RESTful 和 Ajax
Ā 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2
Ā 
Applications: A Series of States
Applications: A Series of StatesApplications: A Series of States
Applications: A Series of States
Ā 
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ć
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ćć€AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ć
怐AWS Developers Meetup怑RESTful API悒Chalice恧ē“č§£ć
Ā 
ParisJS #10 : RequireJS
ParisJS #10 : RequireJSParisJS #10 : RequireJS
ParisJS #10 : RequireJS
Ā 
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Ø
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Øęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Ø
ęµœę¾Rails3é“å “ć€€å…¶ć®å£±ć€€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆä½œęˆć€œRougingē·Ø
Ā 
Ember - introduction
Ember - introductionEmber - introduction
Ember - introduction
Ā 
Node.js server-side rendering
Node.js server-side renderingNode.js server-side rendering
Node.js server-side rendering
Ā 
ui-router and $state
ui-router and $stateui-router and $state
ui-router and $state
Ā 

Viewers also liked

Page Caching Resurrected
Page Caching ResurrectedPage Caching Resurrected
Page Caching ResurrectedBen Scofield
Ā 
Resourceful Plugins
Resourceful PluginsResourceful Plugins
Resourceful PluginsBen Scofield
Ā 
Cleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-SpecificityCleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-SpecificityBen Scofield
Ā 
Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUGBen Scofield
Ā 
How to Be Awesome in 2.5 Steps
How to Be Awesome in 2.5 StepsHow to Be Awesome in 2.5 Steps
How to Be Awesome in 2.5 StepsBen Scofield
Ā 

Viewers also liked (6)

Ciclo 13
Ciclo 13Ciclo 13
Ciclo 13
Ā 
Page Caching Resurrected
Page Caching ResurrectedPage Caching Resurrected
Page Caching Resurrected
Ā 
Resourceful Plugins
Resourceful PluginsResourceful Plugins
Resourceful Plugins
Ā 
Cleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-SpecificityCleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-Specificity
Ā 
Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUG
Ā 
How to Be Awesome in 2.5 Steps
How to Be Awesome in 2.5 StepsHow to Be Awesome in 2.5 Steps
How to Be Awesome in 2.5 Steps
Ā 

Similar to Advanced RESTful Rails

Intro to-rails-webperf
Intro to-rails-webperfIntro to-rails-webperf
Intro to-rails-webperfNew Relic
Ā 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverSpike Brehm
Ā 
Rails World 2023: Powerful Rails Features You Might Not Know
Rails World 2023: Powerful Rails Features You Might Not KnowRails World 2023: Powerful Rails Features You Might Not Know
Rails World 2023: Powerful Rails Features You Might Not KnowChris Oliver
Ā 
Rails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiRails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiPivorak MeetUp
Ā 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overviewYehuda Katz
Ā 
Ruby on Rails - Introduction
Ruby on Rails - IntroductionRuby on Rails - Introduction
Ruby on Rails - IntroductionVagmi Mudumbai
Ā 
Working with Javascript in Rails
Working with Javascript in RailsWorking with Javascript in Rails
Working with Javascript in RailsSeungkyun Nam
Ā 
Rails Routing and URL design
Rails Routing and URL designRails Routing and URL design
Rails Routing and URL designhiq5
Ā 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015Matt Raible
Ā 
Emberjs building-ambitious-web-applications
Emberjs building-ambitious-web-applicationsEmberjs building-ambitious-web-applications
Emberjs building-ambitious-web-applicationsColdFusionConference
Ā 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2A.K.M. Ahsrafuzzaman
Ā 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapMarcio Marinho
Ā 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
Ā 
Drupalcon 2023 - How Drupal builds your pages.pdf
Drupalcon 2023 - How Drupal builds your pages.pdfDrupalcon 2023 - How Drupal builds your pages.pdf
Drupalcon 2023 - How Drupal builds your pages.pdfLuca Lusso
Ā 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pagessparkfabrik
Ā 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSAntonio Peric-Mazar
Ā 
More to RoC weibo
More to RoC weiboMore to RoC weibo
More to RoC weiboshaokun
Ā 
Simplify Your Rails Controllers With a Vengeance
Simplify Your Rails Controllers With a VengeanceSimplify Your Rails Controllers With a Vengeance
Simplify Your Rails Controllers With a Vengeancebrianauton
Ā 

Similar to Advanced RESTful Rails (20)

The Rails Way
The Rails WayThe Rails Way
The Rails Way
Ā 
Finding unused code in your Rails app
Finding unused code in your Rails appFinding unused code in your Rails app
Finding unused code in your Rails app
Ā 
Intro to-rails-webperf
Intro to-rails-webperfIntro to-rails-webperf
Intro to-rails-webperf
Ā 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
Ā 
Rails World 2023: Powerful Rails Features You Might Not Know
Rails World 2023: Powerful Rails Features You Might Not KnowRails World 2023: Powerful Rails Features You Might Not Know
Rails World 2023: Powerful Rails Features You Might Not Know
Ā 
Rails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiRails MVC by Sergiy Koshovyi
Rails MVC by Sergiy Koshovyi
Ā 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
Ā 
Ruby on Rails - Introduction
Ruby on Rails - IntroductionRuby on Rails - Introduction
Ruby on Rails - Introduction
Ā 
Working with Javascript in Rails
Working with Javascript in RailsWorking with Javascript in Rails
Working with Javascript in Rails
Ā 
Rails Routing and URL design
Rails Routing and URL designRails Routing and URL design
Rails Routing and URL design
Ā 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
Ā 
Emberjs building-ambitious-web-applications
Emberjs building-ambitious-web-applicationsEmberjs building-ambitious-web-applications
Emberjs building-ambitious-web-applications
Ā 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ā 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter Bootstrap
Ā 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Ā 
Drupalcon 2023 - How Drupal builds your pages.pdf
Drupalcon 2023 - How Drupal builds your pages.pdfDrupalcon 2023 - How Drupal builds your pages.pdf
Drupalcon 2023 - How Drupal builds your pages.pdf
Ā 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages
Ā 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
Ā 
More to RoC weibo
More to RoC weiboMore to RoC weibo
More to RoC weibo
Ā 
Simplify Your Rails Controllers With a Vengeance
Simplify Your Rails Controllers With a VengeanceSimplify Your Rails Controllers With a Vengeance
Simplify Your Rails Controllers With a Vengeance
Ā 

More from Ben Scofield

Great Developers Steal
Great Developers StealGreat Developers Steal
Great Developers StealBen Scofield
Ā 
Thinking Small
Thinking SmallThinking Small
Thinking SmallBen Scofield
Ā 
Open Source: A Call to Arms
Open Source: A Call to ArmsOpen Source: A Call to Arms
Open Source: A Call to ArmsBen Scofield
Ā 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
Ā 
Intentionality: Choice and Mastery
Intentionality: Choice and MasteryIntentionality: Choice and Mastery
Intentionality: Choice and MasteryBen Scofield
Ā 
Mastery or Mediocrity
Mastery or MediocrityMastery or Mediocrity
Mastery or MediocrityBen Scofield
Ā 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty HammerBen Scofield
Ā 
Mind Control - DevNation Atlanta
Mind Control - DevNation AtlantaMind Control - DevNation Atlanta
Mind Control - DevNation AtlantaBen Scofield
Ā 
Understanding Mastery
Understanding MasteryUnderstanding Mastery
Understanding MasteryBen Scofield
Ā 
Mind Control: Psychology for the Web
Mind Control: Psychology for the WebMind Control: Psychology for the Web
Mind Control: Psychology for the WebBen Scofield
Ā 
The State of NoSQL
The State of NoSQLThe State of NoSQL
The State of NoSQLBen Scofield
Ā 
NoSQL @ CodeMash 2010
NoSQL @ CodeMash 2010NoSQL @ CodeMash 2010
NoSQL @ CodeMash 2010Ben Scofield
Ā 
NoSQL: Death to Relational Databases(?)
NoSQL: Death to Relational Databases(?)NoSQL: Death to Relational Databases(?)
NoSQL: Death to Relational Databases(?)Ben Scofield
Ā 
Charlotte.rb - "Comics" Is Hard
Charlotte.rb - "Comics" Is HardCharlotte.rb - "Comics" Is Hard
Charlotte.rb - "Comics" Is HardBen Scofield
Ā 
The Future of Data
The Future of DataThe Future of Data
The Future of DataBen Scofield
Ā 
WindyCityRails - "Comics" Is Hard
WindyCityRails - "Comics" Is HardWindyCityRails - "Comics" Is Hard
WindyCityRails - "Comics" Is HardBen Scofield
Ā 
"Comics" Is Hard: Alternative Databases
"Comics" Is Hard: Alternative Databases"Comics" Is Hard: Alternative Databases
"Comics" Is Hard: Alternative DatabasesBen Scofield
Ā 
Mind Control on the Web
Mind Control on the WebMind Control on the Web
Mind Control on the WebBen Scofield
Ā 
How the Geeks Inherited the Earth
How the Geeks Inherited the EarthHow the Geeks Inherited the Earth
How the Geeks Inherited the EarthBen Scofield
Ā 

More from Ben Scofield (20)

Great Developers Steal
Great Developers StealGreat Developers Steal
Great Developers Steal
Ā 
Thinking Small
Thinking SmallThinking Small
Thinking Small
Ā 
Open Source: A Call to Arms
Open Source: A Call to ArmsOpen Source: A Call to Arms
Open Source: A Call to Arms
Ā 
Ship It
Ship ItShip It
Ship It
Ā 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
Ā 
Intentionality: Choice and Mastery
Intentionality: Choice and MasteryIntentionality: Choice and Mastery
Intentionality: Choice and Mastery
Ā 
Mastery or Mediocrity
Mastery or MediocrityMastery or Mediocrity
Mastery or Mediocrity
Ā 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty Hammer
Ā 
Mind Control - DevNation Atlanta
Mind Control - DevNation AtlantaMind Control - DevNation Atlanta
Mind Control - DevNation Atlanta
Ā 
Understanding Mastery
Understanding MasteryUnderstanding Mastery
Understanding Mastery
Ā 
Mind Control: Psychology for the Web
Mind Control: Psychology for the WebMind Control: Psychology for the Web
Mind Control: Psychology for the Web
Ā 
The State of NoSQL
The State of NoSQLThe State of NoSQL
The State of NoSQL
Ā 
NoSQL @ CodeMash 2010
NoSQL @ CodeMash 2010NoSQL @ CodeMash 2010
NoSQL @ CodeMash 2010
Ā 
NoSQL: Death to Relational Databases(?)
NoSQL: Death to Relational Databases(?)NoSQL: Death to Relational Databases(?)
NoSQL: Death to Relational Databases(?)
Ā 
Charlotte.rb - "Comics" Is Hard
Charlotte.rb - "Comics" Is HardCharlotte.rb - "Comics" Is Hard
Charlotte.rb - "Comics" Is Hard
Ā 
The Future of Data
The Future of DataThe Future of Data
The Future of Data
Ā 
WindyCityRails - "Comics" Is Hard
WindyCityRails - "Comics" Is HardWindyCityRails - "Comics" Is Hard
WindyCityRails - "Comics" Is Hard
Ā 
"Comics" Is Hard: Alternative Databases
"Comics" Is Hard: Alternative Databases"Comics" Is Hard: Alternative Databases
"Comics" Is Hard: Alternative Databases
Ā 
Mind Control on the Web
Mind Control on the WebMind Control on the Web
Mind Control on the Web
Ā 
How the Geeks Inherited the Earth
How the Geeks Inherited the EarthHow the Geeks Inherited the Earth
How the Geeks Inherited the Earth
Ā 

Recently uploaded

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
Ā 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
Ā 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
Ā 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
Ā 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
Ā 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
Ā 
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot ModelDeepika Singh
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
Ā 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
Ā 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
Ā 
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 Scriptwesley chun
Ā 
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 CVKhem
Ā 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
Ā 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
Ā 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
Ā 
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
Ā 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
Ā 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
Ā 

Recently uploaded (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Ā 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
Ā 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Ā 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Ā 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Ā 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
Ā 
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Ā 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Ā 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
Ā 
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
Ā 
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
Ā 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
Ā 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Ā 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Ā 
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
Ā 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Ā 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Ā 

Advanced RESTful Rails