applied ruby on rails & ajax an insight into the technology and principles behind a social...

28
Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Upload: gabriella-kearney

Post on 26-Mar-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Applied Ruby on Rails & AJAX

An insight into the technology and principles behind a social networking

community

Page 2: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Who am I?

• Farhan Mashraqi (Frank Mash)

• Developer for 7+ years• MySQL DBA• Community Member• A Recovering PHP

Developer

Contact Information:• Business E-mail: [email protected]• Personal E-mail: [email protected] • Personal Blog http://mashraqi.com

Page 3: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

What we’ll cover(aka the essentials)

• Why ROR?

• MVC

• Crash Course (Scaffolding etc)

• URLs in ROR

• Adoppt

• AJAXifying Forms

• Relationships / Validations

Page 4: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

The essentials continued

• Transactions

• Blog Claims

• Tagging

• In place editing

• Learn more

• Q&A

Page 5: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Why would I use Ruby On Rails?

• RAD• DRY: “Do not Repeat

Yourself”• Disciplined• Normalization• Relationships• Web Services• Everything is an Object

Page 6: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

MVC

Page 7: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Crash Course

[root@srv31 docs]# rails ror create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create components create db create doc create lib create lib/tasks create log create public/images...

Creating a bare application on Rails

[root@srv31 docs]# rails ror

Page 8: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Do it with Scaffolding

[root@srv31 ror]# ruby script/generate scaffold user exists app/controllers/ exists app/helpers/ create app/views/users exists test/functional/ dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/user.rb

ruby script/generate scaffold user

CRUD = ‘C’reate, ‘R’ead, ‘U’pdate, ‘D’elete

Page 9: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Experience the magichttp://localhost:3000/users http://localhost:3000/users/new

Page 10: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Find functions

• find_by_[field_name] (field_value)

• find_by_[field_name]_and_[field_name]

• find_first

• find_all_by

• find()

• find_by_sql(‘SELECT ….’)

Page 11: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

URLs in ROR

<%= link_to “Reply”, :controller=>”posts”, :action=>“reply”, :id=>4 %>

Page 12: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

What is Adoppt

• A replicatable social networking platform

• Create and participate in communities

• Blogs, Forums, Favorites and more

Page 13: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community
Page 14: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community
Page 15: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Ajaxifying the login form

Ajaxified version<%= link_to “Login”, :controller=>”member”, :action=>”login” %>

Typical form in ROR

<%= link_to_remote “Login”, :url=>{ :controller=>”member”, :action=>”login” },

:update => “loginform”,:loading => “Element.toggle($(‘loading’))”,:complete => “Element.toggle($(‘loading’))”

%>

Same form ‘AJAXified’

Page 16: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community
Page 17: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Relationships / Validations• A community

– Has many members subscribed– Members can post favorite web sites– Belongs to a member or system

class Portal < ActiveRecord::Base has_many :subscriptions has_many :favorites belongs_to :member validates_presence_of :portal_name validates_presence_of :portal_description validates_presence_of :portal_url validates_uniqueness_of :portal_url…end

Page 18: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

HABTM using Subscriptionsclass Member

has_many :subscriptions end

class Portalhas_many :subscriptions

end

class Subscription belongs_to :member belongs_to :portal

end

Page 19: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Self referential relationships• A member has many friends (member)

• Self referential HABTM relationship

class Member < ActiveRecord::Base has_and_belongs_to_many :friends, :class_name => "Member", :join_table => "friends_members", :association_foreign_key => "friend_id", :foreign_key => "member_id", :after_add => :become_friend_with_friend, :after_remove => :end_friendshipend

Page 20: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Using relationships

@portal = Portal.new@favorites = @portal.favorites

1. Which favorites were posted to a portal

2. Which members are subscribed?@portal = Portal.new@members = @portal.subscriptions

@member = Member.new@member_portals = @member.portals

3. Which portals a member is subscribed to?

4. Which members are friends of a member?@member = Member.new@friends = @member.friends

Page 21: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Transactions (InnoDB)Member.transaction(@member, @friend) do

@member.friends << @friend unless @member.friends.include?(@friend)

@friend.friends << @member unless @friend.friends.include?(@member)

end

Page 22: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Blog Claimsdef claim_verify @wb= Weblog.find_by_url(@params[:url]) require 'open-uri‘ @found = open(@wb.url).read.include?(@wb.v_key)end

Page 23: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Tagging

• acts_as_taggable gem (http://taggable.rubyforge.org/)

Page 24: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Taggingclass Article < ActiveRecord::Base acts_as_taggable :join_class_name => 'TagArticle‘

class TagArticle

belongs_to :article, :class_name => 'Article', :foreign_key => 'article_id‘

@tagged = Article.tags_count(:limit => 10)

Tagging an article@article = [email protected] “mysql conference ror”

Tags for an article@tags = @article.tags()

Tag Cloud (Tom Fakes)

Page 25: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

In place editing

class BlogsController < ApplicationController in_place_edit_for :weblog, :description

<%= in_place_editor_field :weblog, :description, :value=>'' %>

In your views file

In your model

Page 26: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Recap

• ROR: Valuable to You

Page 27: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Where to learn more

• Books– Agile Web Development with Rails by Dave Thomas and David

Heinemeier Hansson – Pro Rails by me– ROR Recipes by Chad Fowler

• Websites– http://www.ruby-doc.org/– http://www.rubygarden.org/ruby/– http://www.ruby-lang.org/– http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/index.html– http://script.aculo.us– http://rubyonrails.adoppt.com/blog/frank

Page 28: Applied Ruby on Rails & AJAX An insight into the technology and principles behind a social networking community

Q&A