Cheap, Fast, and Good You can have it all with Ruby on Rails

Size: px
Start display at page:

Download "Cheap, Fast, and Good You can have it all with Ruby on Rails"

Transcription

1 Cheap, Fast, and Good You can have it all with Ruby on Rails Brian McCallister

2 What is Ruby? Dynamic and Interpreted Strong support for OO programming Everything is an object ( 2.next == 3 ) Strong support for functional-style programming Blocks, closures, first-class functions Child of Perl and Smalltalk

3 What is Rails? Model-2 Web Framework Object/Relational Mapping Library SOAP Producer/Consumer Framework Templating/Mailing Library Code Generator Very Rapidly Evolving!

4 Principles Involved Less Code Convention over Configuration Proximity Least Surprise Make components play nicely together!

5 Action Pack That Web Stuff

6 Request Cycle

7 require 'date' Some Code class AggregateController < ApplicationController model :entry def for_date date = logger.debug "for_date: = Entry.on_date date # Additional actions removed for slide s benefit`

8 Action require 'date' class AggregateController < ApplicationController model :entry def for_date date = logger.debug "for_date: = Entry.on_date date Action # Additional actions removed for slide s benefit`

9 Controller require 'date' Controller class AggregateController < ApplicationController model :entry def for_date date = logger.debug "for_date: = Entry.on_date date def = Entry.find_all Action Action # Additional actions removed for slide s benefit`

10 How We Got Here ActionController::Routing::Routes.draw do map # map.connect ':controller/service.wsdl', # :action => 'wsdl' map.connect 'wombat/is/frily', :controller => :feeds, :action => :list map.connect '', :controller => :feeds, :action => :list # Default Route map.connect ':controller/:action/:id'

11 routes.rb ActionController::Routing::Routes.draw do map # map.connect ':controller/service.wsdl', # :action => 'wsdl' map.connect 'wombat/is/frily', :controller => :feeds, :action => :list map.connect '', :controller => :feeds, :action => :list # Default Route map.connect ':controller/:action/:id'

12 routes.rb ActionController::Routing::Routes.draw do map # map.connect ':controller/service.wsdl', # :action => 'wsdl' map.connect 'wombat/is/frily', :controller => :feeds, :action => :list map.connect '', :controller => :feeds, :action => :list # Default Route map.connect ':controller/:action/:id'

13 routes.rb ActionController::Routing::Routes.draw do map # map.connect ':controller/service.wsdl', # :action => 'wsdl' map.connect 'wombat/is/frily', :controller => :feeds, :action => :list map.connect '', :controller => :feeds, :action => :list # Default Route map.connect ':controller/:action/:id'

14 Show Us Something! <h1>recent Stories...</h1> <table class="entrytable" > <% for entry %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table>

15 Directives <h1>recent Stories...</h1> <table class="entrytable" > <% for entry %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table>

16 Expressions <h1>recent Stories...</h1> <table class="entrytable" > <% for entry %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table>

17 Helpers & Partials <h1>recent Stories...</h1> <%= rer_partial "entry_list", :stories %> <table class="entrytable" > <% for entry in stories %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table> my_view.rhtml _entry_list.rhtml

18 Helpers <h1>recent Stories...</h1> <%= rer_partial "entry_list", :stories %> <table class="entrytable" > <% for entry in stories %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table> my_view.rhtml _entry_list.rhtml

19 Parameterized Partials <h1>recent Stories...</h1> <%= rer_partial "entry_list", :stories %> <table class="entrytable" > <% for entry in stories %> <tr> <td class="entrytitle"> <%= entry.feed.title + ": " + entry.title %> </td> </tr> <tr> <td class="entrybody"> <%= entry.body %> </td> </tr> <% %> </table> my_view.rhtml _entry_list.rhtml

20 Picking Views Default Views The View for that one over there... Named Views Something completely different?

21 require 'date' Default Views class AggregateController < ApplicationController model :entry aggregate/for_date.rhtml def for_date date = logger.debug "for_date: = Entry.on_date date # Additional actions removed for slide s benefit`

22 rer_* require 'date' class AggregateController < ApplicationController model :entry def = Entry.on_date Date.today rer_action :list_entries def = Entry.find_all aggregate/list_entries.rhtml # Additional actions removed for slide s benefit`

23 Named Views require 'date' class AggregateController < ApplicationController model :entry def = Entry.find_all rer :a_template a_template.rhtml # Additional actions removed for slide s benefit`

24 require 'date' Raw Rering class AggregateController < ApplicationController model :entry def direct_write rer_text "Hello World!" No template! # Additional actions removed for slide s benefit`

25 Additional Options s_data s_file rer_to_string rer_nothing rer_text with a block redirect_to redirect_to_url redirect_to_path builders and more!

26 Helpers Programmatic output generation Global, Controller Specific, Importable Like tag libraries kind of Lots of built-ins

27 #{Controller}Helper module AggregateHelper def say_hello(name) "<h1>hello, #{name}" Helper <h1>recent Stories...</h1> <%= say_hello "Brian" %> <table> <% for entry %>... Usage

28 Rules, well Suggestions #{Controller}Helper applied from matching Controller ApplicationHelper available everywhere Declare reliance on a specific Helper from any Controller Rarely need to do this, though

29 Action Pack Magic 3 Controllers Helpers Views Things not discussed: Components Caching Filters

30 Active Record You get the data from the database and shake it all about...

31 Active Record Basics Not Required! One Row == One Instance Dynamic Properties by Default Query by SQL or Criteria Including joins PostgreSQL, MySQL, Oracle, DB2... more

32 The Schema

33 The Classes class Feed < ActiveRecord::Base has_many :entries validates_presence_of :title, :url... class Entry < ActiveRecord::Base belongs_to :feed validates_presence_of :title, :body, :entry_uid validates_uniqueness_of :entry_uid

34 Relations class Feed < ActiveRecord::Base has_many :entries validates_presence_of :title, :url... class Entry < ActiveRecord::Base belongs_to :feed validates_presence_of :title, :body, :entry_uid validates_uniqueness_of :entry_uid

35 Queries def Entry.recent(count) Entry.find :all, :order =>'created_on DESC', :limit => count, :include => [:feed] def Entry.after(date) Entry.find :all, :conditions => ['created_on >=?', date], :order => 'created_on DESC', :include => [:feed] def Entry.before(date) Entry.find_by_sql ["select e.* from entries e where created_on <?", date]

36 Criteria def Entry.recent(count) Entry.find :all, :order =>'created_on DESC', :limit => count, :include => [:feed] def Entry.after(date) Entry.find :all, :conditions => ['created_on >=?', date], :order => 'created_on DESC', :include => [:feed] def Entry.before(date) Entry.find_by_sql ["select e.* from entries e where created_on <?", date]

37 SQL def Entry.recent(count) Entry.find :all, :order =>'created_on DESC', :limit => count, :include => [:feed] def Entry.after(date) Entry.find :all, :conditions => ['created_on >=?', date], :order => 'created_on DESC', :include => [:feed] def Entry.before(date) Entry.find_by_sql ["select e.* from entries e where created_on <?", date]

38 Code Generator This stuff rocks!

39 Creating Rails Project rails apachecon create app create app/apis create app/controllers create app/helpers create app/models... create log/test.log ls -F apachecon/ CHANGELOG Rakefile components/ db/ lib/ public/ test/ README app/ config/ doc/ log/ script/ vor/

40 This Created... Project Hierarchy Config file (for database connection) Rakefile (Makefile) System Test Harness Unit Test Harness Apache HTTPD Configs (.htaccess) Additional Code Generation Scripts...

41 Configure Database cat config/ database.yml development: adapter: postgresql database: ruby_blogs_dev host: localhost username: blogs password: **********... production: adapter: postgresql database: ruby_blogs host: localhost username: blogs password: **********

42 Some CRUD scaffold Talk depency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/talk.rb create test/unit/talk_test.rb create test/fixtures/talks.yml exists app/controllers/ exists app/helpers/ create app/views/talks exists test/functional/ create app/controllers/talks_controller.rb create test/functional/talks_controller_test.rb create app/helpers/talks_helper.rb create app/views/layouts/talks.rhtml create public/stylesheets/scaffold.css create app/views/talks/list.rhtml create app/views/talks/show.rhtml create app/views/talks/new.rhtml create app/views/talks/edit.rhtml create app/views/talks/_form.rhtml

43 A Table apachecon=> create table talks ( id serial primary key, name varchar(255) not null, presenter varchar(255) not null, description text not null); NOTICE: CREATE TABLE will create implicit sequence "sessions_id_seq" for serial column "sessions.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "sessions_pkey" for table "sessions" CREATE TABLE apachecon=>

44 Start the Server... => Rails application started on [ :00:12] INFO WEBrick [ :00:12] INFO ruby ( ) [ :00:12] INFO WEBrick::HTTPServer#start: pid=26996 port=3000

45 List

46 TalksController class TalksController < ApplicationController def index list rer_action 'list' = paginate :talk, :per_page => 10 def = Talk.find(@params[:id])...

47 Create

48 The Edit View <h1>editing talk</h1> <%= start_form_tag :action => 'update', :id %> <%= rer_partial "form" %> <%= submit_tag "Edit" %> <%= _form_tag %> <%= link_to 'Show', :action => 'show', :id %> <%= link_to 'Back', :action => 'list' %> talks/edit.rhtml <%= error_messages_for 'talk' %> <!--[form:talk]--> <p><label for="talk_description">description</label><br/> <%= text_area 'talk', 'description' %></p> <p><label for="talk_presenter">presenter</label><br/> <%= text_field 'talk', 'presenter' %></p> <p><label for="talk_name">name</label><br/> <%= text_field 'talk', 'name' %></p> <!--[eoform:talk]--> talks/_form.rhtml

49 List Again

50 Unit and System Tests rake (in /Users/brianm/Sites/apachecon) ruby -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-0.5.4/lib/ rake/rake_test_loader.rb" "test/unit/talk_test.rb" Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.4/lib/rake/ rake_test_loader Started. Finished in seconds. 1 tests, 1 assertions, 0 failures, 0 errors ruby -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-0.5.4/lib/ rake/rake_test_loader.rb" "test/functional/ talks_controller_test.rb" Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.4/lib/rake/ rake_test_loader Started... Finished in seconds. 8 tests, 26 assertions, 0 failures, 0 errors brianm@kite:~/sites/apachecon$

51 # General Apache options AddHandler fastcgi-script.fcgi AddHandler cgi-script.cgi Options +FollowSymLinks +ExecCGI.htaccess # If you don't want Rails to look in certain directories, # use the following rewrite rules so that Apache won't... <snip /> # # Example: # RewriteCond %{REQUEST_URI} ^/notrails.* # RewriteRule.* - [L] # Redirect all requests not available on the filesystem to Rails # By default the cgi dispatcher is used which is very slow # # For better performance replace the dispatcher with the fastcgi one # # Example: # RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] RewriteEngine On RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^(.*)$ dispatch.cgi [QSA,L]...

52 Extensible Generator Some 3rd Party Generators: Login Generator Salted Hash Login Generator Tabbed Navbar Generator Search Generator Configuration Generator Postback Generator

53 Deployment Time Stuff to be aware of...

54 Development Test Production Environment

55 Web Servers Webrick Apache Web Server CGI mod_ruby fastcgi lighttpd fastcgi

56 Session Storage Serialize to /tmp DRb Server Database memcached Custom No Sessions

57 Scaling Up Multi-processing model (like prefork) DB Connection per FCGI Process Remote FCGI instances Static and Dynamic Caching Easy to interface with C (Almost as easy to interface with OCaml)

58 The Diagram

59 Web Resources Ruby Why s Poignant Guide to Ruby Ruby on Rails Ruby Documentation

60 That s all folks! Brian McCallister brianm@chariotsolutions.com

61 Thank You to Sponsors!

Ruby on Rails. Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06

Ruby on Rails. Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06 Ruby on Rails Brian McCallister Ning, Inc. Philadelphia Emerging Technology Conference 06 Smalltalk Robert Tinney www.tinney.net + Lisp Conrad Barski www.lisperati.com + Perl O Reilly www.perl.com Without

More information

Ruby on Rails. Rails Released 1.0 Yesterday! Brian McCallister. ApacheCon US 2005

Ruby on Rails. Rails Released 1.0 Yesterday! Brian McCallister. ApacheCon US 2005 Ruby on Rails Rails Released 1.0 Yesterday! Brian McCallister ApacheCon US 2005 Smalltalk Robert Tinney www.tinney.net + Lisp Conrad Barski www.lisperati.com + Perl O Reilly www.perl.com Without the...

More information

appendix B: Working with Ruby on Rails

appendix B: Working with Ruby on Rails B1 appix B: Working with Ruby on Rails APPENDIX B B2 Since the beginning of the Web, both static and dynamic typed languages have been used for writing web applications. Java and its cousin C# have emerged

More information

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap Strategies for Rapid Web Prototyping Ruby on Rails Strategies for Rapid Web Prototyping DRY: Don't repeat yourself Convention over Configuration Separation of Concern Templating MVC: Model View Controler

More information

Advanced RESTful Rails. Ben Scofield

Advanced RESTful Rails. Ben Scofield Advanced RESTful Rails Ben Scofield 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

More information

COM401 Software Engineering Laboratory

COM401 Software Engineering Laboratory Computer Engineering Department COM401 Software Engineering Laboratory November 04, 2014 LAB-3: Rails Introduction Time: 2 lab hours Objectives: Practice with Ruby Symbols Routes MVC pattern CRUD operations

More information

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies Ruby on Rails 3 Robert Crida Stuart Corbishley Clue Technologies Topic Overview What is Rails New in Rails 3 New Project Generators MVC Active Record UJS RVM Bundler Migrations Factory Girl RSpec haml

More information

Building a Rails Application

Building a Rails Application Building a Rails Application Let s get started! Use MySQL to create a depot_development database Create a new Ruby on Rails project called depot Make sure root password is included in Configuration/database.yml

More information

Rails: Associations and Validation

Rails: Associations and Validation Rails: Associations and Validation Computer Science and Engineering College of Engineering The Ohio State University Lecture 17 Schemas, Migrations, Models migrations models database.yml db:migrate db:create

More information

Lecture 4. Ruby on Rails 1 / 49

Lecture 4. Ruby on Rails 1 / 49 Lecture 4 Ruby on Rails 1 / 49 Client-Server Model 2 / 49 What is it? A client (e.g. web browser, phone, computer, etc.) sends a request to a server Request is an HTTP request Stands for HyperText Transfer

More information

Rails: MVC in action

Rails: MVC in action Ruby on Rails Basic Facts 1. Rails is a web application framework built upon, and written in, the Ruby programming language. 2. Open source 3. Easy to learn; difficult to master. 4. Fun (and a time-saver)!

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications.

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications. About the Tutorial Ruby on Rails is an extremely productive web application framework written in Ruby by David Heinemeier Hansson. This tutorial gives you a complete understanding on Ruby on Rails. Audience

More information

How To Redirect A Webpage Cheat Sheet

How To Redirect A Webpage Cheat Sheet How To Redirect A Webpage Cheat Sheet Need the code for your htaccess file? Check out our htaccess redirect generator here! Using Wordpress The easiest way to redirect a webpage on Wordpress is to use

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

Chado on Rails. a framework to simplify development on the Chado schema. Justin Reese / Chris Childers

Chado on Rails. a framework to simplify development on the Chado schema. Justin Reese / Chris Childers Chado on Rails a framework to simplify development on the Chado schema Justin Reese / Chris Childers Some links: These slides: http://tinyurl.com/chadoonrails Source code, have a look: svn co http://chadoonrails.rubyforge.org/svn/trunk

More information

Getting Started with Rails

Getting Started with Rails Getting Started with Rails January 13, 2015 This guide covers getting up and running with Ruby on Rails. After reading this guide, you will know: How to install Rails, create a new Rails application, and

More information

Lecture 8. Validations & Sessions 1 / 41

Lecture 8. Validations & Sessions 1 / 41 Lecture 8 Validations & Sessions 1 / 41 Advanced Active Record 2 / 41 More Complex Queries Arel provides us with a number of methods to query our database tables So far, we've only used find which limits

More information

CSCI-2320 Web Programming: Ruby on Rails

CSCI-2320 Web Programming: Ruby on Rails CSCI-2320 Web Programming: Ruby on Rails Mohammad T. Irfan Plan u Model-View-Controller (MVC) framework of web programming u Ruby on Rails 1 Ruby on Rails u Developed by David Hansson released 2004 u MVC

More information

Lecture 4. Ruby on Rails 1 / 52

Lecture 4. Ruby on Rails 1 / 52 Lecture 4 Ruby on Rails 1 / 52 Homeworks 2 & 3 Grades were released for homework 2 Homework 3 was due last night Everyone got a style freebie since my default setup ignores spec files and I didn't change

More information

CakePHP. Getting ready. Downloading CakePHP. Now that you have PHP installed let s create a place in htdocs for your CakePHP development:

CakePHP. Getting ready. Downloading CakePHP. Now that you have PHP installed let s create a place in htdocs for your CakePHP development: CakePHP Getting ready Now that you have PHP installed let s create a place in htdocs for your CakePHP development: [tblgrant@silo htdocs]$ pwd /u/tblgrant/apache/htdocs [tblgrant@silo htdocs]$ mkdir cakewalks

More information

Ruby on Rails. Origin Drive Destination

Ruby on Rails. Origin Drive Destination Ruby on Rails Origin Drive Destination Rails Just enough stuff to make the creation of database-backed web applications tolerable Rails Just enough stuff to make the creation of database-backed web applications

More information

Ruby on Rails Installation

Ruby on Rails Installation Ruby on Rails Installation http://www.tutorialspoint.com/ruby-on-rails/rails-installation.htm This tutorial will guide you to set up a private Ruby on Rails environment in the daw server. Step 0: Login

More information

Ruby on Rails TKK, Otto Hilska

Ruby on Rails TKK, Otto Hilska Ruby on Rails intro @ TKK, 25.5.2009 Otto Hilska 1 Today s agenda 1. The Ruby programming language 2. Ruby on Rails framework 3. An example project 2 About me Started Nodeta Oy in 2004 10+ employees always

More information

Bitnami Ruby for Huawei Enterprise Cloud

Bitnami Ruby for Huawei Enterprise Cloud Bitnami Ruby for Huawei Enterprise Cloud Description Bitnami Ruby Stack provides a complete development environment for Ruby on Rails that can be deployed in one click. It includes most popular components

More information

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide!

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide! Rails Guide Hey, thanks a lot for picking up this guide! I created this guide as a quick reference for when you are working on your projects, so you can quickly find what you need & keep going. Hope it

More information

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Agenda 2 Ruby & Ruby on Rails What is Ruby on Rails? A few words about Ruby Core components RESTful architecture Active Record Your

More information

Table of Contents EVALUATION COPY

Table of Contents EVALUATION COPY Table of Contents What is Ruby on Rails?... 1-2 Overview of Rails Components... 1-3 Installing Rails... 1-5 A Simple Rails Application... 1-6 Starting the Rails Server... 1-8 Static Pages Within a Rails

More information

Zend Framework for IBM i

Zend Framework for IBM i Zend Framework for IBM i Part II: MVC and ZF Applications Who is Jeff Olen? Author of bestselling IBM i Programmers Guide to PHP Zend Certified Engineer PHP 5 IBM i developer for 20+ years Co-founder of

More information

Rails: Views and Controllers

Rails: Views and Controllers Rails: Views and Controllers Computer Science and Engineering College of Engineering The Ohio State University Lecture 18 Recall: Rails Architecture Wiring Views and Controllers A controller is just an

More information

Advanced Topics on the Mirth Connect Interface Engine. July 6, 2016

Advanced Topics on the Mirth Connect Interface Engine. July 6, 2016 Advanced Topics on the Mirth Connect Interface Engine July 6, 2016 You have been automatically muted. Please use the Q&A panel to submit questions during the presentation PRESENTER Nate Bessa Technical

More information

app = web.application(urls, globals()) class hello: def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' if name == " main "

app = web.application(urls, globals()) class hello: def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' if name ==  main How to deploy web.py applications In this article you will learn how to deploy a web.py application under Linux / UNIX environments. You can refer to our article titled, How to install web.py if you don

More information

Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett

Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett CMPUT 410 Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett Introduction - What is Ruby on Rails? Ruby on Rails is an open source web application development

More information

Where we are. For example. Extensions. Authorization and Testing

Where we are. For example. Extensions. Authorization and Testing Where we are Authorization and Testing Last time: We added the ability of users to log in, and made sure that we treated their passwords in a secure fashion. INFO 2310: Topics in Web Design and Programming

More information

Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE

Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE scharlau@csd.abdn.ac.uk Abstract This paper considers the teaching of the object oriented

More information

Web Application Expectations

Web Application Expectations Effective Ruby on Rails Development Using CodeGear s Ruby IDE Shelby Sanders Principal Engineer CodeGear Copyright 2007 CodeGear. All Rights Reserved. 2007/6/14 Web Application Expectations Dynamic Static

More information

Contents. Contents... XI

Contents. Contents... XI Contents Preface... V Motivation for this Book... V Who Should Read this Book?...VI Outline to the Book Structure... VII Prerequisite Skills... VIII Acknowledgements... VIII About the Author... VIII Contents...

More information

Demystifying Rails Plugin Development

Demystifying Rails Plugin Development Demystifying Rails Plugin Development Nick Plante :: Voices That Matter Professional Ruby Conference November 18th, 2008 Obligatory Introduction Plugins are generalized, reusable code libraries Ext or

More information

Rails: Associations and Validation

Rails: Associations and Validation Rails: Associations and Validation Computer Science and Engineering College of Engineering The Ohio State University Lecture 26 Schemas, Migrations, Models migrations models database.yml db:migrate db:create

More information

CS 155 Project 2. Overview & Part A

CS 155 Project 2. Overview & Part A CS 155 Project 2 Overview & Part A Project 2 Web application security Composed of two parts Part A: Attack Part B: Defense Due date: Part A: May 5th (Thu) Part B: May 12th (Thu) Project 2 Ruby-on-Rails

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

PoWA Documentation. Release Dalibo

PoWA Documentation. Release Dalibo PoWA Documentation Release 1.2.1 Dalibo May 04, 2015 Contents 1 PostgreSQL Workload Analyzer detailled installation guide 3 1.1 Download PoWA from the website................................... 3 1.2

More information

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile Status: Closed Priority: Normal Author: Enno Grà per Category: Created: 2011-07-17 Assignee: Updated: 2012-06-23 Due date:

More information

Real World Web Scalability. Ask Bjørn Hansen Develooper LLC

Real World Web Scalability. Ask Bjørn Hansen Develooper LLC Real World Web Scalability Ask Bjørn Hansen Develooper LLC Hello. 28 brilliant methods to make your website keep working past $goal requests/transactions/sales per second/hour/day Requiring minimal extra

More information

Validations vs. Filters

Validations vs. Filters Validations vs. Filters Advice (DRYness) Validation Filter Check invariants on model Check conditions for allowing controller action to run Pointcut AR model lifecycle hooks Before and/or after any public

More information

web frameworks design comparison draft - please help me improve it focus on Model-View-Controller frameworks

web frameworks design comparison draft - please help me improve it focus on Model-View-Controller frameworks web frameworks design comparison draft - please help me improve it focus on Model-View-Controller frameworks Controllers In Rails class MyTestController < ApplicationController def index render_text Hello

More information

DRYing Out MVC (ESaaS 5.1)"

DRYing Out MVC (ESaaS 5.1) DRYing Out MVC (ESaaS 5.1)" Armando Fox" 2013 Armando Fox & David Patterson, all rights reserved Don t Repeat Yourself but how?" Goal: enforce that movie names must be less than 40 characters" Call a check

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Keven Richly keven.richly@hpi.de Software Engineering II WS 2017/18 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

0/49. Rails Application Optimization Techniques & Tools. Stefan Kaes. Back Close

0/49. Rails Application Optimization Techniques & Tools. Stefan Kaes.   Back Close 0/49 Rails Application Optimization Techniques & Tools Stefan Kaes www.railsexpress.de skaes@gmx.net 1/49 A tiny piece of history Performance Tuning Trying to improve performance without measuring is foolish.

More information

User Authentication and Session Control

User Authentication and Session Control User Authentication and Session Control CITS3403 Web & Internet Technologies Includes material from Agile Web Development with Rails, 3rd Ed, 2008 and 4 th Ed 2011, 2012 The Pragmatic Programmers. Slides

More information

Creating a Network. WordPress 3.1 (and up)

Creating a Network. WordPress 3.1 (and up) Creating a Network in WordPress 3.1 (and up) A comprehensive guide to setting up multisite by Andrea Rennick http://wpebooks.com Introduction Hello there intrepid reader. This here guide is to explain

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Software Engineering II WS 2016/17 Arian Treffer arian.treffer@hpi.de Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby

More information

Ruby on Rails for PHP and Java Developers

Ruby on Rails for PHP and Java Developers Deepak Vohra Ruby on Rails for PHP and Java Developers With 202 Figures and 32 Tables Springer Contents Preface Motivation for this Book Who Should Read this Book? Outline to the Book Structure Prerequisite

More information

My First Three Weeks on Rails. Aaron Mulder Chariot Solutions

My First Three Weeks on Rails. Aaron Mulder Chariot Solutions My First Three Weeks on Rails Aaron Mulder Chariot Solutions Background J2EE developer Mac/Linux platform Have used dynamic languages before (mostly Perl, some P/Jython) Never used Ruby Suddenly found

More information

Serverless Single Page Web Apps, Part Four. CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016

Serverless Single Page Web Apps, Part Four. CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016 Serverless Single Page Web Apps, Part Four CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016 1 Goals Cover Chapter 4 of Serverless Single Page Web Apps by Ben Rady Present the issues

More information

Courslets, a golf improvement web service. Peter Battaglia

Courslets, a golf improvement web service. Peter Battaglia Courslets, a golf improvement web service Peter Battaglia Discussion Project Overview Design and Technologies Utilized Rails and REST URLs, URLs, URLs Rails and Web Services What s s exposed as a service?

More information

RPG & PHP REST SERVICES WITH APIGILITY. Chuk Shirley Sabel Steel Service Club Seiden

RPG & PHP REST SERVICES WITH APIGILITY. Chuk Shirley Sabel Steel Service Club Seiden RPG & PHP REST SERVICES WITH APIGILITY Chuk Shirley Sabel Steel Service Club Seiden Senior Software Engineer Founder and Owner Subject Matter Expert 2015 Innovation Award Winner @ChukShirley chukshirley@gmail.com

More information

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Agenda 2 Ruby & Ruby on Rails What is Ruby on Rails? A few words about Ruby Rails core components RESTful architecture Your first

More information

Rake Tasks. David Grayson Las Vegas Ruby Meetup

Rake Tasks. David Grayson Las Vegas Ruby Meetup Rake Tasks David Grayson Las Vegas Ruby Meetup 2013-08-14 Two main types of Rails commands: rails rails new rails server rails console rails generate rake rake db:migrate rake spec rake routes rake middleware

More information

Install WordPress 3.X In Multi Blog / Multi user mode On localhost

Install WordPress 3.X In Multi Blog / Multi user mode On localhost Install WordPress 3.X In Multi Blog / Multi user mode On localhost In this tutorial, we will cover how to setup WordPress as a Multi User /Multi Blog. We ll start by downloading and installing a new version

More information

# Fix the issue:.xlsx and.docx are being saved as a zip file in Internet explorer

# Fix the issue:.xlsx and.docx are being saved as a zip file in Internet explorer Apache/PHP/Drupal settings: Fix the issue:.xlsx and.docx are being saved as a zip file in Internet explorer AddType application/vnd.openxmlformats.docx.pptx.xlsx.xltx. xltm.dotx.potx.ppsx BrowserMatch

More information

Rails Routing Roundup

Rails Routing Roundup Rails Routing Roundup Rails Routing Roundup David A. Black Ruby Power and Light, LLC http://www.rubypal.com 1 Roadmap Basics of routing system Recognition Generation Defining routes (routing rules) in

More information

WP EBOOKS Creating A WordPress Network

WP EBOOKS Creating A WordPress Network WP EBOOKS Creating A WordPress Network The Complete Guide to Setting Up WordPress Multisite 1 WP EBOOKS Creating A WordPress Network The Complete Guide to Setting Up WordPress Multisite 2 Creating a WordPress

More information

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60 Web Technologies VU (706.704) Vedran Sabol ISDS, TU Graz Nov 13, 2017 Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, 2017 1 / 60 Outline 1 Separation of Concerns Design Principle 2 Model-View-Controller

More information

Rails: Models. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 25

Rails: Models. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 25 Rails: Models Computer Science and Engineering College of Engineering The Ohio State University Lecture 25 Recall: Rails Architecture Recall: Rails Architecture Mapping Tables to Objects General strategy

More information

Typical PHP Code Everything shoved into one file. Not Good!

Typical PHP Code Everything shoved into one file. Not Good! MVC in Trax Typical PHP Code Everything shoved into one file. Not Good!

More information

PHPRad. PHPRad At a Glance. This tutorial will show you basic functionalities in PHPRad and

PHPRad. PHPRad At a Glance. This tutorial will show you basic functionalities in PHPRad and PHPRad PHPRad At a Glance. This tutorial will show you basic functionalities in PHPRad and Getting Started Creating New Project To create new Project. Just click on the button. Fill In Project properties

More information

Real Life Web Development. Joseph Paul Cohen

Real Life Web Development. Joseph Paul Cohen Real Life Web Development Joseph Paul Cohen joecohen@cs.umb.edu Index 201 - The code 404 - How to run it? 500 - Your code is broken? 200 - Someone broke into your server? 400 - How are people using your

More information

Hermes Message Dispatching

Hermes Message Dispatching Hermes Message Dispatching FOSDEM 2010 Klaas Freitag opensuse Boosters, the opensuse Project Topics Hermes Message Dispatching 1.What is the Problem? 2.Get Back Control! 3.Technical Details 4.You want

More information

Static Webpage Development

Static Webpage Development Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction

More information

Edition 0.1. real scenarios for managing EAP instances. Last Updated:

Edition 0.1. real scenarios for managing EAP instances. Last Updated: JBoss Operations Network 3.0 Managing JBoss Servers with JBoss ON Edition 0.1 real scenarios for managing EAP instances Last Updated: 2017-10-25 JBoss Operations Network 3.0 Managing JBoss Servers with

More information

Get in Touch Module 1 - Core PHP XHTML

Get in Touch Module 1 - Core PHP XHTML PHP/MYSQL (Basic + Advanced) Web Technologies Module 1 - Core PHP XHTML What is HTML? Use of HTML. Difference between HTML, XHTML and DHTML. Basic HTML tags. Creating Forms with HTML. Understanding Web

More information

Mysql Manual Show Profile Query 1

Mysql Manual Show Profile Query 1 Mysql Manual Show Profile Query 1 See Section 4.5.2, mysqladmin Client for Administering a MySQL Server. Open_tables / 1 / / Open_files / 2 / / Open_streams / 0 / / Opened_tables / 44600. check out Appendix

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Ralf Teusner ralf.teusner@hpi.de Software Engineering II WS 2018/19 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

SymphonyThemes Quick Start Guide. Build a great theme with SymphonyThemes

SymphonyThemes Quick Start Guide. Build a great theme with SymphonyThemes SymphonyThemes Quick Start Guide Build a great theme with SymphonyThemes Table of Content 1. Installing your SymphonyTheme... 3 2. What if I want to rename my theme?... 3 3. Theme configuration options...

More information

micro-framework Documentation

micro-framework Documentation micro-framework Documentation Release 2.0.2 phpmv Apr 03, 2018 Installation configuration 1 Ubiquity-devtools installation 1 2 Project creation 3 3 Project configuration 5 4 Devtools usage 9 5 URLs 11

More information

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software Groovy & Grails Scripting for Modern Web Applications Rohit Nayak Talentica Software Agenda Demo: Quick intro to Grails Scripting, Web Applications and Grails/Groovy REST service in Grails Demo Internals

More information

NETCONF Client GUI. Client Application Files APPENDIX

NETCONF Client GUI. Client Application Files APPENDIX APPENDIX B The NETCONF client is a simple GUI client application that can be used to understand the implementation of the NETCONF protocol in Cisco E-DI. This appendix includes the following information:

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

Web development with PHP. Kore Nordmann, Tobias Schlitt, Jakob Westhoff Dortmund

Web development with PHP. Kore Nordmann, Tobias Schlitt, Jakob Westhoff Dortmund Web development with PHP Kore Nordmann, Tobias Schlitt, Jakob Westhoff Dortmund 29.06.09 Speaker Jakob Westhoff Kore Nordmann Tobias Schlitt Active in various

More information

Learn Ruby on Rails. Learn Web Development With Ruby on Rails

Learn Ruby on Rails. Learn Web Development With Ruby on Rails Learn Ruby on Rails Learn Web Development With Ruby on Rails Who am I? I am Harry and just like you I had never done any coding before. A complete beginner I wanted to learn how to create web apps such

More information

Rails: Associations and Validation

Rails: Associations and Validation Rails: Associations and Validation Computer Science and Engineering College of Engineering The Ohio State University Lecture 28 Schemas, Migrations, Models migrations models database.yml db:migrate db:create

More information

CSC 405 Computer Security. Web Security

CSC 405 Computer Security. Web Security CSC 405 Computer Security Web Security Alexandros Kapravelos akaprav@ncsu.edu (Derived from slides by Giovanni Vigna and Adam Doupe) 1 The XMLHttpRequest Object Microsoft developers working on Outlook

More information

Mastering Modern Payments

Mastering Modern Payments Mastering Modern Payments Using Stripe with Rails by Pete Keen Sample Chapter State and History So far in our little example app we can buy and sell downloadable products using Stripe. We're not keeping

More information

Perl Dbi Insert Hash Into Table >>>CLICK HERE<<<

Perl Dbi Insert Hash Into Table >>>CLICK HERE<<< Perl Dbi Insert Hash Into Table How to insert values in PostgreSQL faster than insert() value() functions? At the moment I am using DBI in Perl to connect to IQ(Sybase) then load the values into a hash,

More information

Smart Links for SEO. Miva Module for Miva Merchant 5. Contents

Smart Links for SEO. Miva Module for Miva Merchant 5. Contents Smart Links for SEO user manual Miva Module for Miva Merchant 5 Contents Introduction Requirements Installation Rewrite Rules Template Customization Best Practices Support copyright 2009 by NetBlazon LLC

More information

Here are some figures to consider while answering the following questions.

Here are some figures to consider while answering the following questions. Here are some figures to consider while answering the following questions. Figure 1. Example page from Music Catalog web app. Figure 2. config/routes.rb Figure 3. Output of rake routes command. Figure

More information

Programming the World Wide Web by Robert W. Sebesta

Programming the World Wide Web by Robert W. Sebesta Programming the World Wide Web by Robert W. Sebesta Tired Of Rpg/400, Jcl And The Like? Heres A Ticket Out Programming the World Wide Web by Robert Sebesta provides students with a comprehensive introduction

More information

6.170 Tutorial 7 - Rails Security. Prerequisites. Goals of this tutorial. Resources

6.170 Tutorial 7 - Rails Security. Prerequisites. Goals of this tutorial. Resources 6.170 Tutorial 7 - Rails Security Introduction Sessions Session Hijacking Replay Attacks Session Fixation CSRF Hackers Love Mass Assignment Injection SQL Injection Cross Site Scripting (XSS) Logging Authorizing

More information

CS169.1x Lecture 6: Basic Rails" Fall 2012"

CS169.1x Lecture 6: Basic Rails Fall 2012 CS169.1x Lecture 6: Basic Rails" Fall 2012" 1" The Database is Golden Contains valuable customer data don t want to test your app on that! Rails solution: development, production and test environments

More information

New Contributor Tutorial and Best Practices

New Contributor Tutorial and Best Practices New Contributor Tutorial and Best Practices Vicențiu Ciorbaru Software Engineer @ MariaDB Foundation * 2018 MariaDB Foundation * Goal of this session Most attendees here are highly experienced devs Let's

More information

Jarvis Web Gateway. Installation Instructions. Jonathan Couper-Smartt

Jarvis Web Gateway. Installation Instructions. Jonathan Couper-Smartt Jarvis Web Gateway Installation Instructions Jonathan Couper-Smartt jarvis@nsquared.co.nz Abstract: The Jarvis Web Gateway is a lightweight web-service designed to give Rich Internet Applications a rapid,

More information

CS193X: Web Programming Fundamentals

CS193X: Web Programming Fundamentals CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) CS193X schedule Today - Middleware and Routes - Single-page web app - More MongoDB examples - Authentication - Victoria

More information

Authentication in Rails

Authentication in Rails Authentication in Rails Aaron Mulder CTO Chariot Solutions Philly on Rails, October 2007 1 Agenda The problem Plugins in Rails, and the (many) solutions acts_as_authenticated Generated Code Custom Code

More information

Apache and... Virtual Hosts ---- aliases mod_rewrite ---- htaccess. 31 st Oct - 4 th Nov Blantyre, Malawi. Dorcas Muthoni.

Apache and... Virtual Hosts ---- aliases mod_rewrite ---- htaccess. 31 st Oct - 4 th Nov Blantyre, Malawi. Dorcas Muthoni. Apache and... Virtual Hosts ---- aliases mod_rewrite ---- htaccess AFNOG Chix 2011 Blantyre, Malawi 31 st Oct - 4 th Nov 2011 Dorcas Muthoni Courtesy: Hervey Allen Very good overview here: What is Apache?

More information

The MANUAL. 1 P a g e

The MANUAL. 1 P a g e The MANUAL 1 P a g e http://wasimrlis.blogspot.in https://coprofessionals.wordpress.com 2 P a g e Guided to search tools are used to help library users to find the resources they are seeking. Originally

More information

CSE 135. Main Problem: Multiple languages and multiple computation servers

CSE 135. Main Problem: Multiple languages and multiple computation servers CSE 15 Rapid Application Development: Object-Relational Mapping & a lesson on the whys and why nots Main Problem: Multiple languages and multiple computation servers Two different computation servers with

More information

Splitting and Merging. Down and Dirty Made Easy

Splitting and Merging. Down and Dirty Made Easy Splitting and Merging Down and Dirty Made Easy Splitting WebGUI Sites E unus pluribum Splitting WebGUI Sites Two possible ways Duplicate and cut-down No need for messy rewrite rules Entirely separate site

More information

Ruby on Rails Secure Coding Recommendations

Ruby on Rails Secure Coding Recommendations Introduction Altius IT s list of Ruby on Rails Secure Coding Recommendations is based upon security best practices. This list may not be complete and Altius IT recommends this list be augmented with additional

More information

Apache FastCGI Tutorial

Apache FastCGI Tutorial Apache FastCGI Tutorial Release 0.9 Sébastien Lugan April 10, 2011 CONTENTS 1 Prerequisites 1 2 Server configuration 3 2.1 Installation of Apache, FastCGI module and libraries........................

More information