Skip to content

Commit 7f6d211

Browse files
committed
Breaking up the app into nice chunks.
hackety.rb was getting a bit large. Breaking up into subfiles for ease of finding where things are.
1 parent 70b1bfa commit 7f6d211

7 files changed

Lines changed: 152 additions & 147 deletions

File tree

configure.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
set :views, File.join(File.dirname(__FILE__), 'views')
2+
3+
def setup_db environ
4+
MongoMapper.connection = Mongo::Connection.new('localhost')
5+
MongoMapper.database = "hackety-#{environ}"
6+
end
7+
8+
configure :test do
9+
setup_db(:test)
10+
end
11+
12+
configure :development do
13+
setup_db(:development)
14+
end
15+
16+
configure do
17+
require_directory "models"
18+
end

controllers/posts.rb

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
get "/blog" do
2+
@posts = Post.all
3+
haml :'posts/index'
4+
end
5+
6+
get "/posts/new" do
7+
unless logged_in? && current_user.admin?
8+
flash[:error] = "Sorry, buddy"
9+
redirect "/posts"
10+
end
11+
12+
haml :'posts/new'
13+
end
14+
15+
post "/posts" do
16+
unless logged_in? && current_user.admin?
17+
flash[:error] = "Sorry, buddy"
18+
redirect "/posts"
19+
end
20+
21+
@post = Post.create(params)
22+
flash[:notice] = "Post Created"
23+
redirect "/posts/#{@post.id}"
24+
end
25+
26+
get "/posts" do
27+
@posts = Post.all
28+
haml :'posts/index'
29+
end
30+
31+
get "/posts/:id" do
32+
@post = Post.find(params[:id])
33+
haml :'posts/show'
34+
end
35+
36+
get "/posts/:id/edit" do
37+
unless logged_in? && current_user.admin?
38+
flash[:error] = "Sorry, buddy"
39+
redirect "/posts"
40+
end
41+
42+
@post = Post.find(params[:id])
43+
haml :'posts/edit'
44+
end
45+
46+
put "/posts/:id" do
47+
unless logged_in? && current_user.admin?
48+
flash[:error] = "Sorry, buddy"
49+
redirect "/posts"
50+
end
51+
@post = Post.find(params[:id])
52+
@post.update_attributes(params)
53+
flash[:notice] = "Post Modified"
54+
redirect "/posts/#{@post.id}"
55+
end
56+
57+
post "/comments" do
58+
unless current_user
59+
flash[:error] = "You must be logged in to comment!"
60+
redirect "/posts"
61+
end
62+
63+
params[:comment]['user_email'] = current_user.email
64+
@post = Post.find(params[:post_id])
65+
@post.comments << Comment.new(params[:comment])
66+
@post.save
67+
flash[:notice] = "Thanks for your comment!"
68+
redirect "/posts/#{@post.id}"
69+
end

controllers/user.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
get '/signup' do
2+
haml :"users/signup"
3+
end
4+
5+
post '/signup' do
6+
@user = User.create(params[:user])
7+
if @user && @user.valid?
8+
session[:user] = @user.id
9+
flash[:notice] = "Account created."
10+
redirect '/'
11+
else
12+
flash[:notice] = 'There were some problems creating your account. Please be sure you\'ve entered all your information correctly.'
13+
redirect '/signup'
14+
end
15+
end
16+
17+
get '/login' do
18+
haml :"users/login"
19+
end
20+
21+
post '/login' do
22+
if user = User.authenticate(params[:username], params[:password])
23+
session[:user_id] = user.id
24+
flash[:notice] = "Login successful."
25+
26+
if session[:return_to]
27+
redirect_url = session[:return_to]
28+
session[:return_to] = false
29+
redirect redirect_url
30+
else
31+
redirect '/'
32+
end
33+
else
34+
flash[:notice] = "The username or password you entered is incorrect."
35+
redirect '/login'
36+
end
37+
end
38+
39+
get '/logout' do
40+
session[:user_id] = nil
41+
flash[:notice] = "Logout successful."
42+
redirect '/'
43+
end

features/user.feature

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@ Feature: User management
1818
And I fill in "Password" with "foobar"
1919
And I fill in "Confirm Password" with "foobar"
2020
When I press "Create account"
21-
And open page
2221
Then I should see "There were some problems"
2322
And I should be on the new user page

hackety.rb

Lines changed: 5 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,21 @@
11
require 'rubygems'
22
require 'sinatra'
3-
require 'mongo_mapper'
43
require 'haml'
4+
require 'mongo_mapper'
55
require 'rack-flash'
66
require 'rdiscount'
77

88
use Rack::Session::Cookie, :secret => 'h4ck3ty h4ck f0r gr347 g00d'
99
use Rack::Flash
1010

11-
set :views, File.join(File.dirname(__FILE__), 'views')
12-
13-
def setup_db environ
14-
MongoMapper.connection = Mongo::Connection.new('localhost')
15-
MongoMapper.database = "hackety-#{environ}"
16-
end
17-
18-
configure :test do
19-
setup_db(:test)
20-
end
21-
22-
configure :development do
23-
setup_db(:development)
24-
end
25-
26-
configure do
27-
Dir.glob("#{File.expand_path(File.dirname(__FILE__))}/models/*.rb").each do |f|
28-
require f
29-
end
30-
end
31-
32-
helpers do
11+
require 'utility'
3312

34-
def current_user
35-
return User.first(:id => session[:user_id]) if session[:user_id]
36-
nil
37-
end
13+
require 'configure'
3814

39-
def logged_in?
40-
return session[:user_id] != nil
41-
end
42-
43-
end
15+
require 'helpers'
4416

4517
get "/" do
4618
haml :index
4719
end
4820

49-
get "/blog" do
50-
@posts = Post.all
51-
haml :'posts/index'
52-
end
53-
54-
get "/posts/new" do
55-
unless logged_in? && current_user.admin?
56-
flash[:error] = "Sorry, buddy"
57-
redirect "/posts"
58-
end
59-
60-
haml :'posts/new'
61-
end
62-
63-
post "/posts" do
64-
unless logged_in? && current_user.admin?
65-
flash[:error] = "Sorry, buddy"
66-
redirect "/posts"
67-
end
68-
69-
@post = Post.create(params)
70-
flash[:notice] = "Post Created"
71-
redirect "/posts/#{@post.id}"
72-
end
73-
74-
get "/posts" do
75-
@posts = Post.all
76-
haml :'posts/index'
77-
end
78-
79-
get "/posts/:id" do
80-
@post = Post.find(params[:id])
81-
haml :'posts/show'
82-
end
83-
84-
get "/posts/:id/edit" do
85-
unless logged_in? && current_user.admin?
86-
flash[:error] = "Sorry, buddy"
87-
redirect "/posts"
88-
end
89-
90-
@post = Post.find(params[:id])
91-
haml :'posts/edit'
92-
end
93-
94-
put "/posts/:id" do
95-
unless logged_in? && current_user.admin?
96-
flash[:error] = "Sorry, buddy"
97-
redirect "/posts"
98-
end
99-
@post = Post.find(params[:id])
100-
@post.update_attributes(params)
101-
flash[:notice] = "Post Modified"
102-
redirect "/posts/#{@post.id}"
103-
end
104-
105-
post "/comments" do
106-
unless current_user
107-
flash[:error] = "You must be logged in to comment!"
108-
redirect "/posts"
109-
end
110-
111-
params[:comment]['user_email'] = current_user.email
112-
@post = Post.find(params[:post_id])
113-
@post.comments << Comment.new(params[:comment])
114-
@post.save
115-
flash[:notice] = "Thanks for your comment!"
116-
redirect "/posts/#{@post.id}"
117-
end
118-
119-
get '/signup' do
120-
haml :"users/signup"
121-
end
122-
123-
post '/signup' do
124-
@user = User.create(params[:user])
125-
if @user && @user.valid?
126-
session[:user] = @user.id
127-
flash[:notice] = "Account created."
128-
redirect '/'
129-
else
130-
flash[:notice] = 'There were some problems creating your account. Please be sure you\'ve entered all your information correctly.'
131-
redirect '/signup'
132-
end
133-
end
134-
135-
get '/login' do
136-
haml :"users/login"
137-
end
138-
139-
post '/login' do
140-
if user = User.authenticate(params[:username], params[:password])
141-
session[:user_id] = user.id
142-
flash[:notice] = "Login successful."
143-
144-
if session[:return_to]
145-
redirect_url = session[:return_to]
146-
session[:return_to] = false
147-
redirect redirect_url
148-
else
149-
redirect '/'
150-
end
151-
else
152-
flash[:notice] = "The username or password you entered is incorrect."
153-
redirect '/login'
154-
end
155-
end
156-
157-
get '/logout' do
158-
session[:user_id] = nil
159-
flash[:notice] = "Logout successful."
160-
redirect '/'
161-
end
162-
21+
require_directory "controllers"

helpers.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
helpers do
2+
3+
def current_user
4+
return User.first(:id => session[:user_id]) if session[:user_id]
5+
nil
6+
end
7+
8+
def logged_in?
9+
return session[:user_id] != nil
10+
end
11+
12+
end

utility.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
def require_directory dirname
2+
Dir.glob("#{File.expand_path(File.dirname(__FILE__))}/#{dirname}/*.rb").each do |f|
3+
require f
4+
end
5+
end

0 commit comments

Comments
 (0)