Boston Computing Review Ruby on Rails

Reviews
Shared by: BrandalJaclson
Stats
views:
18
rating:
not rated
reviews:
0
posted:
9/2/2009
language:
English
pages:
0
BCR : Ruby on Rails an introduction more at http://www.rubyonrails.org/ Boston Computing Review 2006 Background / Agenda • • • • Upcoming web project Fears Welcome Ruby Getting Onto Rails – Framework, MVC, Databases, Application Servers and more • Deploying ROR • Where to look Next Boston Computing Review 2006 Considerations • .NET – Experience • J2EE – Enterprise Acceptance • PHP – Proven, knowledgebase • Ruby on Rails – Development Speed, native MVC *and a little fun* Boston Computing Review 2006 Fears • • • • • PHP vs ROR Stability Lack of Public Knowledge Base “Shark Attack” Missing Intelisense… Boston Computing Review 2006 Ruby • • • • • Based on SmallTalk, Perl, Lisp Object Oriented Not strongly typed Basics http://www.fincher.org/tips/Languages/Ruby/ “FUN”? :) Boston Computing Review 2006 Rails Framework • • • • • • • • Power Through Rules and Best Practice MVC Assumes a Database Object Relational Mapping Forms Handling – Been there done that Parameters Link Building Scaffolding Boston Computing Review 2006 MVC • Nothing New, 1973 • Model – Your Data and Data Rules • View – Interface • Controller – Traffic Director Boston Computing Review 2006 MVC in ROR View ShowUser.rhtml … def ShowUser User Name <% = @user.name %> … @user = User.find(params[:id]) end def other end def another end … Boston Computing Review 2006 Controller Users_controller.rb … Model user.rb class User < ActiveRecord::Base #relations has_many:posts #start validation here validates_presence_of :email, :username, :password validates_uniqueness_of :email, :username End Model • • • • Object Relational Mapping “ActiveRecord” Less Database “glue” Code *sigh of relief!* Worst Case Scenario Optimizations Possible with manual SQL • Logging for Performance Checking Boston Computing Review 2006 Model : Rules • Table Names – Plurals • Attribute Names – id for primary key in table – table_id for foreign key in other table • Ability to run joins via objects! – Article.User.Username • Legacy Options Available Boston Computing Review 2006 Model : Sample from Text Boston Computing Review 2006 Model : Sample from Text Boston Computing Review 2006 Model : Sample from Text Boston Computing Review 2006 Model : Code Sample class User < ActiveRecord::Base #relations has_many:posts #related to rankings has_many:ranks has_many:critiques #start validation here validates_format_of(:email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message=>"has an invalid format") validates_presence_of :email, :username, :password validates_uniqueness_of :email, :username #authentication for user def self.authenticate(username, password) user = User.find(:first, :conditions => ["username = ?", username]) if user if user.password != password user = nil end end user end Boston Computing Review 2006 end Model : DB Logging Processing SearchController#list (for 127.0.0.1 at 2006-11-18 22:51:36) [POST] Session ID: 667befe9190e1c686f537e8dcdcd731d Parameters: {"commit"=>"search", "action"=>"list", "controller"=>"search", "query"=>{"query"=>"test"}} [4;36;1mArticle Load (0.000000) [0m [0;1mselect a.* from articles a where (lower(a.title) like '%querytest%' or lower(a.articlebody) like '%querytest%' or lower(a.description) like '%querytest%') order by a.created_on desc [0m Rendering within layouts/search Rendering search/list Completed in 0.03100 (32 reqs/sec) | Rendering: 0.01500 (48%) | DB: 0.00000 (0%) | 200 OK [http://localhost/search/list] Boston Computing Review 2006 Controller • Method name matches view folder – users_controller.rb works for /views/users/***.rhtml – called “actions” – all view’s methods will sit there • Ability to – CRUD – Flash – Redirect Boston Computing Review 2006 Controller : ActiveRecord Create def create @user = User.new(params[:user]) if @user.save flash[:notice] = 'User was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end Boston Computing Review 2006 Controller : Flash def create @user = User.new(params[:user]) if @user.save flash[:notice] = 'User was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end Boston Computing Review 2006 Controller : Redirect def create @user = User.new(params[:user]) if @user.save flash[:notice] = 'User was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end Boston Computing Review 2006 Controller : Getting Data • Request Data (POST / GET) – Params hash • Models • Session data • etc Boston Computing Review 2006 Views • • • • • Show the data Templates (layouts) Use objects from controller Navigate guide into controller / action Forms Boston Computing Review 2006 Views : Showing Data • Inline Ruby (similar to JSP) <% for column in User.content_columns %>

<%= column.human_name %>: <%=h @user.send(column.name) %>

<% end %> <%= link_to 'Edit', :action => 'edit', :id => @user %> | <%= link_to 'Back', :action => 'list' %> Boston Computing Review 2006 Views : Layouts • Inherit by default for controller • Exception in controller #set the layout layout "articles", :except => [:signin, :richtest] Boston Computing Review 2006 View : Layout Sample Admin: <%= controller.action_name %> <%= stylesheet_link_tag 'scaffold' %>

<%= flash[:notice] %>

<%= @content_for_layout %> Boston Computing Review 2006 View : Object from Controller <% for column in User.content_columns %>

<%= column.human_name %>: <%=h @user.send(column.name) %>

<% end %> <%= link_to 'Edit', :action => 'edit', :id => @user %> | <%= link_to 'Back', :action => 'list' %> Boston Computing Review 2006 View : Navigation <% for column in User.content_columns %>

<%= column.human_name %>: <%=h @user.send(column.name) %>

<% end %> <%= link_to 'Edit', :action => 'edit', :id => @user %> | <%= link_to 'Back', :action => 'list' %> Boston Computing Review 2006 View : Forms • Native validation based on model • Partials to separate code from main view view _formname.rhtml

Quick Account Signup

<%= start_form_tag :action => 'create' %> <%= render :partial => 'formname' %> <%= submit_tag "Create" %> <%= end_form_tag %> Boston Computing Review 2006 View : Forms <%= error_messages_for 'user' %>


<%= text_field 'user', 'firstname' %>


<%= text_field 'user', 'lastname' %>


<%= text_field 'user', 'email' %>


<%= text_field 'user', 'username' %>


<%= password_field 'user', 'password' %>


Boston Computing Review 2006 Scaffolding • Fast – Famous video (blog in 15 min) http://media.rubyonrails.org/video/rails_take2_ with_sound.mov • Dynamic view from DB • Great starting place • Needs more work Boston Computing Review 2006 Deploying • • • • • Time consuming but straightforward Unix / Linux hosts TextDrive LightHTTPD server MySQL Boston Computing Review 2006 Miscellaneous / Thoughts • Logging Framework Ready to Use • Interpreted (no waiting for compile) • Once you get the hang of Ruby a lot of fun to quickly develop • In the weeds is still in the weeds Boston Computing Review 2006 Where to Look Next • O’Reilly Onlamp - Great Starting Place – http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html – http://www.onlamp.com/pub/a/onlamp/2005/03/03/rails.html • Books from 37 Signals – Agile Web Development With Rails – Rails Recipies – http://www.rubyonrails.org/docs Boston Computing Review 2006 On the CD • IDE – RadRails – Built on Eclipse • Database – MySQL 5.0 with GUI Tools – Ever wonder why the SQL Server 2005 GUI looks like it does? :) • • • • O’Reilly Onlamp Articles Ruby on Rails Cheat Sheet Famous Blog Video This Powerpoint Deck Boston Computing Review 2006

Related docs
rails-magazine-issue3
Views: 78  |  Downloads: 3
Rails Magazine- Issue #1
Views: 8  |  Downloads: 0
a logic approach to granular computing
Views: 2  |  Downloads: 0
BOSTON
Views: 0  |  Downloads: 0
Comparative study between Ruby_ A
Views: 0  |  Downloads: 0
Rails Across America User Guide
Views: 24  |  Downloads: 0
Gender Bias in Computing
Views: 3  |  Downloads: 0
Boston 15: Selectmen 1736-1742
Views: 2  |  Downloads: 0
BOSTON HONG
Views: 32  |  Downloads: 0
premium docs
Other docs by BrandalJaclson
Commercial Net Lease for Entire Building
Views: 358  |  Downloads: 11
Mom and Dad in the 60 s
Views: 285  |  Downloads: 0
WAIVER OF NOTICE OF MEETING
Views: 189  |  Downloads: 5
Inventory
Views: 279  |  Downloads: 4
long_distance_call_log
Views: 287  |  Downloads: 11
Stock Agreement
Views: 228  |  Downloads: 2
Transcript of Truman Doctrine
Views: 205  |  Downloads: 1
Walk Through Process
Views: 647  |  Downloads: 14
3812[0]
Views: 118  |  Downloads: 0
In connection with deed of trust
Views: 1302  |  Downloads: 1
Book1
Views: 220  |  Downloads: 2
Jourdan'sResumeupdatedMarch2007
Views: 203  |  Downloads: 1
Alternative designation of beneficiaries
Views: 275  |  Downloads: 1