Skip to content

Instantly share code, notes, and snippets.

@innovationhero
Created October 13, 2012 09:26
Show Gist options
  • Save innovationhero/3883943 to your computer and use it in GitHub Desktop.
Save innovationhero/3883943 to your computer and use it in GitHub Desktop.
Some ruby hacks on the train, sinatra signup/login with redis db
=begin
#################################
All Copyrights reserved Mohamed Fouad
About this program, this is a signup/login code part of Torii authentication server
Version: 1.0.0
This program uses semantic versioning
You can learn more about Semantic Versioning at http://semver.org/.
#################################
=end
require 'sinatra'
require 'redis'
require 'erb'
=begin
require 'sinatra/base'
module Sinatra
module PostGet
def post_get(route, &block)
get(route, &block)
post(route, &block)
end
end
# now we just need to register it via Sinatra::Base
register PostGet
end
require 'sinatra/postget'
post_get '/torri_ext' do
"Hi #{params[:name]}"
end
=end
redis = Redis.new()
configure do
enable :sessions
set :show_exceptions, false
# Database
#redis = Redis.new
# redis = Redis.new(:host => "10.0.1.1", :port => 6380)
end
before do
content_type:txt
# Storing initial values on the application level
@before_value = 'foo'
=begin if session[:user] = "database user" then
redirect '/profile'
else
redirect '/home'
end
=end
end
get '/' do
# session['current_user.email'] = "[email protected]"
redirect '/home'
end
get '/env' do
# will itrate over all the values in the @env variable and display them as output
request.env.map { |e| e.to_s + "\n" }
end
get '/cache' do
expires 3600, :public, :must_revalidate
"this page is rendered at #{Time.now}"
end
before '/profile' do
# check if profile user is the logged in user
# check current energy points & add it to session energy points variable
if session[:energy] then
session[:energy] = session[:energy] + 1
redis.set "energy", session[:energy]
else
session[:energy] = 1
redis.set "energy", session[:energy]
end
end
get '/profile' do
=begin
if session[:user] = "database user" then
# nothing you are logged in
erb :profile
else
redirect '/home'
end
=end
# add energy points
session['current_user.email'] = "[email protected]"
current_energy = redis.get "energy"
session[:energy] = current_energy.to_i + 1
erb :profile
end
after '/profile' do
puts # check if profile user is the logged in user
# check current energy points
session[:energy]
end
error '/profile' do #is this sinatra ruby code? please check sinatra docs
puts "Been an Error on Profile route and you coded to avoid this nasty stack...."
end
not_found do
# haml :about
# slim :about
puts "Be Cool! as ekoki.me is overloaded or your page not found!"
end
get '/home' do
session[:db_energy] = redis.get "energy"
erb :home
end
get '/logout' do
session.clear
redirect '/home'
end
after do
#session.clear
puts "After filter called to perform some task. such as session.clear"
end
########################
__END__
########################
# Inline ERB Templates #
########################
@@layout
<!DOCTYPE html>
<head>
<title> beta</title>
</head>
<body>
<h1> beta</h2>
<% if session['current_user.email'] %>
<p> "welcome back, " <%= session['current_user.email'] %> </p>
<% else %>
<p> <a href="/login">Login</a> | <a href="/register">Register</a> </p>
<% end %>
<%= yield %>
</body>
</html>
@@home
<h1> Welcome to RED </h2>
<% if session['current_user.email'] == "[email protected]" %>
<p> cool, the user is logged in the content is approved to be shown </p>
<p> <%= session[:energy] %> </p>
<% else %>
<p> "no energy for this user coz he is not logged in and the content is not approved to be shown"
</p>
<% end %>
<p> redis energy <%= session[:db_energy] %> </p>
@@profile
<h1> This is your profile </h2>
<p> <%= session[:energy] %> </p>
=begin
#################################
All Copyrights reserved Mohamed Fouad
About this program, this is a signup/login code part of Torii authentication server
Version: 1.0.0
This program uses semantic versioning
You can learn more about Semantic Versioning at http://semver.org/.
#################################
=end
require 'sinatra'
require 'redis'
require 'erb'
=begin
require 'sinatra/base'
module Sinatra
module PostGet
def post_get(route, &block)
get(route, &block)
post(route, &block)
end
end
# now we just need to register it via Sinatra::Base
register PostGet
end
require 'sinatra/postget'
post_get '/torri_ext' do
"Hi #{params[:name]}"
end
=end
redis = Redis.new()
configure do
enable :sessions
set :show_exceptions, false
# Database
#redis = Redis.new
# redis = Redis.new(:host => "10.0.1.1", :port => 6380)
end
before do
content_type:txt
# Storing initial values on the application level
@before_value = 'foo'
=begin if session[:user] = "database user" then
redirect '/profile'
else
redirect '/home'
end
=end
end
get '/' do
# session['current_user.email'] = "[email protected]"
redirect '/home'
end
get '/env' do
# will itrate over all the values in the @env variable and display them as output
request.env.map { |e| e.to_s + "\n" }
end
get '/cache' do
expires 3600, :public, :must_revalidate
"this page is rendered at #{Time.now}"
end
before '/profile' do
# check if profile user is the logged in user
# check current energy points & add it to session energy points variable
if session[:energy] then
session[:energy] = session[:energy] + 1
redis.set "energy", session[:energy]
else
session[:energy] = 1
redis.set "energy", session[:energy]
end
end
get '/profile' do
=begin
if session[:user] = "database user" then
# nothing you are logged in
erb :profile
else
redirect '/home'
end
=end
# add energy points
session['current_user.email'] = "[email protected]"
current_energy = redis.get "energy"
session[:energy] = current_energy.to_i + 1
erb :profile
end
after '/profile' do
puts # check if profile user is the logged in user
# check current energy points
session[:energy]
end
error '/profile' do #is this sinatra ruby code? please check sinatra docs
puts "Been an Error on Profile route and you coded to avoid this nasty stack...."
end
not_found do
# haml :about
# slim :about
puts "Be Cool! as ekoki.me is overloaded or your page not found!"
end
get '/home' do
session[:db_energy] = redis.get "energy"
erb :home
end
get '/logout' do
session.clear
redirect '/home'
end
after do
#session.clear
puts "After filter called to perform some task. such as session.clear"
end
########################
__END__
########################
# Inline ERB Templates #
########################
@@layout
<!DOCTYPE html>
<head>
<title> beta</title>
</head>
<body>
<h1> beta</h2>
<% if session['current_user.email'] %>
<p> "welcome back, " <%= session['current_user.email'] %> </p>
<% else %>
<p> <a href="/login">Login</a> | <a href="/register">Register</a> </p>
<% end %>
<%= yield %>
</body>
</html>
@@home
<h1> Welcome to RED </h2>
<% if session['current_user.email'] == "[email protected]" %>
<p> cool, the user is logged in the content is approved to be shown </p>
<p> <%= session[:energy] %> </p>
<% else %>
<p> "no energy for this user coz he is not logged in and the content is not approved to be shown"
</p>
<% end %>
<p> redis energy <%= session[:db_energy] %> </p>
@@profile
<h1> This is your profile </h2>
<p> <%= session[:energy] %> </p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment