Skip to content
This repository has been archived by the owner on Dec 12, 2021. It is now read-only.

Commit

Permalink
adding episode 241
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanb committed Nov 22, 2010
1 parent 1ff6524 commit ca6a510
Show file tree
Hide file tree
Showing 77 changed files with 10,357 additions and 0 deletions.
9 changes: 9 additions & 0 deletions episode-241/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Railscasts Episode #241: Simple Omniauth

http://railscasts.com/episodes/241

Commands

rails g controller sessions
rails g model user provider:string uid:string name:string
rake db:migrate
4 changes: 4 additions & 0 deletions episode-241/blog/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.bundle
db/*.sqlite3
log/*.log
tmp/**/*
6 changes: 6 additions & 0 deletions episode-241/blog/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
gem 'nifty-generators'
gem 'omniauth'
128 changes: 128 additions & 0 deletions episode-241/blog/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
GEM
remote: http://rubygems.org/
specs:
abstract (1.0.0)
actionmailer (3.0.3)
actionpack (= 3.0.3)
mail (~> 2.2.9)
actionpack (3.0.3)
activemodel (= 3.0.3)
activesupport (= 3.0.3)
builder (~> 2.1.2)
erubis (~> 2.6.6)
i18n (~> 0.4)
rack (~> 1.2.1)
rack-mount (~> 0.6.13)
rack-test (~> 0.5.6)
tzinfo (~> 0.3.23)
activemodel (3.0.3)
activesupport (= 3.0.3)
builder (~> 2.1.2)
i18n (~> 0.4)
activerecord (3.0.3)
activemodel (= 3.0.3)
activesupport (= 3.0.3)
arel (~> 2.0.2)
tzinfo (~> 0.3.23)
activeresource (3.0.3)
activemodel (= 3.0.3)
activesupport (= 3.0.3)
activesupport (3.0.3)
addressable (2.2.2)
arel (2.0.4)
builder (2.1.2)
erubis (2.6.6)
abstract (>= 1.0.0)
faraday (0.5.3)
addressable (~> 2.2.2)
multipart-post (~> 1.0.1)
rack (>= 1.1.0, < 2)
i18n (0.4.2)
mail (2.2.10)
activesupport (>= 2.3.6)
i18n (~> 0.4.1)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.16)
multi_json (0.0.5)
multipart-post (1.0.1)
net-ldap (0.1.1)
nifty-generators (0.4.2)
nokogiri (1.4.4)
oa-basic (0.1.6)
multi_json (~> 0.0.2)
nokogiri (~> 1.4.2)
oa-core (= 0.1.6)
rest-client (~> 1.6.0)
oa-core (0.1.6)
rack (~> 1.1)
oa-enterprise (0.1.6)
net-ldap (~> 0.1.1)
nokogiri (~> 1.4.2)
oa-core (= 0.1.6)
pyu-ruby-sasl (~> 0.0.3.1)
rubyntlm (~> 0.1.1)
oa-oauth (0.1.6)
multi_json (~> 0.0.2)
nokogiri (~> 1.4.2)
oa-core (= 0.1.6)
oauth (~> 0.4.0)
oauth2 (~> 0.1.0)
oa-openid (0.1.6)
oa-core (= 0.1.6)
rack-openid (~> 1.2.0)
ruby-openid-apps-discovery
oauth (0.4.4)
oauth2 (0.1.0)
faraday (~> 0.5.0)
multi_json (~> 0.0.4)
omniauth (0.1.6)
oa-basic (= 0.1.6)
oa-core (= 0.1.6)
oa-enterprise (= 0.1.6)
oa-oauth (= 0.1.6)
oa-openid (= 0.1.6)
polyglot (0.3.1)
pyu-ruby-sasl (0.0.3.2)
rack (1.2.1)
rack-mount (0.6.13)
rack (>= 1.0.0)
rack-openid (1.2.0)
rack (>= 1.1.0)
ruby-openid (>= 2.1.8)
rack-test (0.5.6)
rack (>= 1.0)
rails (3.0.3)
actionmailer (= 3.0.3)
actionpack (= 3.0.3)
activerecord (= 3.0.3)
activeresource (= 3.0.3)
activesupport (= 3.0.3)
bundler (~> 1.0)
railties (= 3.0.3)
railties (3.0.3)
actionpack (= 3.0.3)
activesupport (= 3.0.3)
rake (>= 0.8.7)
thor (~> 0.14.4)
rake (0.8.7)
rest-client (1.6.1)
mime-types (>= 1.16)
ruby-openid (2.1.8)
ruby-openid-apps-discovery (1.2.0)
ruby-openid (>= 2.1.7)
rubyntlm (0.1.1)
sqlite3-ruby (1.2.5)
thor (0.14.6)
treetop (1.4.9)
polyglot (>= 0.3.1)
tzinfo (0.3.23)

PLATFORMS
ruby

DEPENDENCIES
nifty-generators
omniauth
rails (= 3.0.3)
sqlite3-ruby (= 1.2.5)
1 change: 1 addition & 0 deletions episode-241/blog/README
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Example Railscasts Application
7 changes: 7 additions & 0 deletions episode-241/blog/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'

Blog::Application.load_tasks
10 changes: 10 additions & 0 deletions episode-241/blog/app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :current_user

private

def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
45 changes: 45 additions & 0 deletions episode-241/blog/app/controllers/articles_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
class ArticlesController < ApplicationController
def index
@articles = Article.all
end

def show
@article = Article.find(params[:id])
@comment = Comment.new(:article_id => @article.id)
end

def new
@article = Article.new
end

def create
@article = Article.new(params[:article])
if @article.save
flash[:notice] = "Successfully created article."
redirect_to @article
else
render :action => 'new'
end
end

def edit
@article = Article.find(params[:id])
end

def update
@article = Article.find(params[:id])
if @article.update_attributes(params[:article])
flash[:notice] = "Successfully updated article."
redirect_to @article
else
render :action => 'edit'
end
end

def destroy
@article = Article.find(params[:id])
@article.destroy
flash[:notice] = "Successfully destroyed article."
redirect_to articles_url
end
end
15 changes: 15 additions & 0 deletions episode-241/blog/app/controllers/comments_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class CommentsController < ApplicationController
def new
@comment = Comment.new
end

def create
@comment = Comment.new(params[:comment])
if @comment.save
flash[:notice] = "Successfully created comment."
redirect_to root_url
else
render :action => 'new'
end
end
end
13 changes: 13 additions & 0 deletions episode-241/blog/app/controllers/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class SessionsController < ApplicationController
def create
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
session[:user_id] = user.id
redirect_to root_url, :notice => "Signed in!"
end

def destroy
session[:user_id] = nil
redirect_to root_url, :notice => "Signed out!"
end
end
2 changes: 2 additions & 0 deletions episode-241/blog/app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module ApplicationHelper
end
2 changes: 2 additions & 0 deletions episode-241/blog/app/helpers/articles_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module ArticlesHelper
end
2 changes: 2 additions & 0 deletions episode-241/blog/app/helpers/comments_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module CommentsHelper
end
23 changes: 23 additions & 0 deletions episode-241/blog/app/helpers/error_messages_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module ErrorMessagesHelper
# Render error messages for the given objects. The :message and :header_message options are allowed.
def error_messages_for(*objects)
options = objects.extract_options!
options[:header_message] ||= "Invalid Fields"
options[:message] ||= "Correct the following errors and try again."
messages = objects.compact.map { |o| o.errors.full_messages }.flatten
unless messages.empty?
content_tag(:div, :class => "error_messages") do
list_items = messages.map { |msg| content_tag(:li, msg) }
content_tag(:h2, options[:header_message]) + content_tag(:p, options[:message]) + content_tag(:ul, list_items.join.html_safe)
end
end
end

module FormBuilderAdditions
def error_messages(options = {})
@template.error_messages_for(@object, options)
end
end
end

ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
22 changes: 22 additions & 0 deletions episode-241/blog/app/helpers/layout_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# These helper methods can be called in your template to set variables to be used in the layout
# This module should be included in all views globally,
# to do so you may need to add this line to your ApplicationController
# helper :layout
module LayoutHelper
def title(page_title, show_title = true)
content_for(:title) { page_title.to_s }
@show_title = show_title
end

def show_title?
@show_title
end

def stylesheet(*args)
content_for(:head) { stylesheet_link_tag(*args) }
end

def javascript(*args)
content_for(:head) { javascript_include_tag(*args) }
end
end
2 changes: 2 additions & 0 deletions episode-241/blog/app/helpers/sessions_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module SessionsHelper
end
4 changes: 4 additions & 0 deletions episode-241/blog/app/models/article.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Article < ActiveRecord::Base
attr_accessible :name, :content
has_many :comments
end
4 changes: 4 additions & 0 deletions episode-241/blog/app/models/comment.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Comment < ActiveRecord::Base
attr_accessible :article_id, :name, :content
belongs_to :article
end
9 changes: 9 additions & 0 deletions episode-241/blog/app/models/user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class User < ActiveRecord::Base
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["user_info"]["name"]
end
end
end
12 changes: 12 additions & 0 deletions episode-241/blog/app/views/articles/_form.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<%= form_for @article do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :content %><br />
<%= f.text_area :content %>
</p>
<p><%= f.submit %></p>
<% end %>
8 changes: 8 additions & 0 deletions episode-241/blog/app/views/articles/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<% title "Edit Article" %>
<%= render 'form' %>

<p>
<%= link_to "Show", @article %> |
<%= link_to "View All", articles_path %>
</p>
14 changes: 14 additions & 0 deletions episode-241/blog/app/views/articles/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<% title "Articles" %>

<div id="articles">
<% for article in @articles %>
<h2>
<%= link_to article.name, article %>
<span class="comments">(<%= pluralize(article.comments.size, 'comment') %>)</span>
</h2>
<div class="created_at">on <%= article.created_at.strftime('%b %d, %Y') %></div>
<div class="content"><%= simple_format(article.content) %></div>
<% end %>
</div>

<p><%= link_to "New Article", new_article_path %></p>
5 changes: 5 additions & 0 deletions episode-241/blog/app/views/articles/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<% title "New Article" %>
<%= render 'form' %>

<p><%= link_to "Back to List", articles_path %></p>
23 changes: 23 additions & 0 deletions episode-241/blog/app/views/articles/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<% title @article.name %>
<%= simple_format @article.content %>

<p><%= link_to "Back to Articles", articles_path %></p>

<% unless @article.comments.empty? %>
<h2><%= pluralize(@article.comments.size, 'comment') %></h2>

<div id="comments">
<% for comment in @article.comments %>
<div class="comment">
<strong><%= comment.name %></strong>
<em>on <%= comment.created_at.strftime('%b %d, %Y at %I:%M %p') %></em>
<%= simple_format comment.content %>
</div>
<% end %>
</div>
<% end %>

<h3>Add your comment:</h3>

<%= render :partial => 'comments/form' %>
Loading

0 comments on commit ca6a510

Please sign in to comment.