Skip to content

Instantly share code, notes, and snippets.

View MaherSaif's full-sized avatar

Maher Saif MaherSaif

View GitHub Profile
@MaherSaif
MaherSaif / redis_usage.rb
Created December 24, 2011 22:06 — forked from mikhailov/redis_usage.rb
Rails on Redis - is all about high performance
# app/controllers/posts_controller.rb
class PostsController < ApplicationController
def index
@posts.all_cached # Retrive only at once by every 5 minutes
expires_in 5.minutes, :private => false, :public => true
end
end
# app/models/post.rb
Class Post
@MaherSaif
MaherSaif / application.rb
Created January 4, 2012 23:37 — forked from arunthampi/application.rb
assets cdn example
require File.expand_path('../boot', __FILE__)
require 'rails/all'
# If you have a Gemfile, require the gems listed there, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env) if defined?(Bundler)
module GetDenso
class Application < Rails::Application
@MaherSaif
MaherSaif / set_asset_fingerprint.rb
Created January 4, 2012 23:38 — forked from arunthampi/set_asset_fingerprint.rb
Set Asset Fingerprint as part of the deployment workflow
def set_asset_fingerprint!
# -- First see if the files have changed
puts "-----> Calculating Asset Fingerprint"
fingerprint_method = "find public -type f -exec md5 {} + | awk '{print $0}' | sort | md5"
current_fingerprint = %x{#{fingerprint_method}}
fingerprint_file = Rails.root.join('assets.fingerprint')
if !File.exists?(fingerprint_file) || current_fingerprint != File.read(fingerprint_file)
execute("#{fingerprint_method} > #{fingerprint_file}")
# -- Add it to production
@MaherSaif
MaherSaif / deploy.rb
Created January 6, 2012 18:09 — forked from stympy/deploy.rb
Skip asset pre-compilation when deploying if the assets didn't change
namespace :deploy do
namespace :assets do
task :precompile, :roles => :web, :except => { :no_release => true } do
from = source.next_revision(current_revision)
if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
else
logger.info "Skipping asset pre-compilation because there were no asset changes"
end
end
@MaherSaif
MaherSaif / Action Mailer
Created January 29, 2012 22:35 — forked from fxn/Action Mailer
Ruby on Rails v3.2.0 CHANGELOGs
## Rails 3.2.0 (January 20, 2012) ##
* Upgrade mail version to 2.4.0 *ML*
* Remove Old ActionMailer API *Josh Kalderimis*
@MaherSaif
MaherSaif / interval.js
Created March 17, 2012 19:11 — forked from manast/interval.js
Accurate Javascript setInterval replacement
function interval(duration, fn){
this.baseline = undefined
this.run = function(){
if(this.baseline === undefined){
this.baseline = new Date().getTime()
}
fn()
var end = new Date().getTime()
this.baseline += duration
@MaherSaif
MaherSaif / hook.js
Created April 22, 2012 12:49
simple javascript hooks system
Expected Result:
----------------
One
Two
Three
Four
Six
class ActionDispatch::Routing::Mapper
def draw(routes_name)
instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
end
end
BCX::Application.routes.draw do
draw :api
draw :account
draw :session
@MaherSaif
MaherSaif / gist:2604278
Created May 5, 2012 17:45 — forked from peplin/gist:2483204
.bashrc.virtualenvwrapper
# Dynamically load virtualenvwrapper functions to reduce shell startup
# time.
#
# Copyright 2012 Aron Griffis <[email protected]>
# Released under the GNU GPL v3
#######################################################################
# Python virtualenvwrapper loads really slowly, so load it on demand.
if [[ $(type -w workon) != "workon: function" ]]; then
virtualenv_funcs=( workon deactivate mkvirtualenv )
require 'rubygems'
require 'sinatra'
require 'redis'
# To use, simply start your Redis server and boot this
# example app with:
# ruby example_note_keeping_app.rb
#
# Point your browser to http://localhost:4567 and enjoy!
#