Skip to content

Instantly share code, notes, and snippets.

Rondy Sousa rondy

Block or report user

Report or block rondy

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@rondy
rondy / gist:1233857
Created Sep 22, 2011
Authorization (modular abilities)
View gist:1233857
class User < ActiveRecord::Base
def admin?
role? :admin
end
def role?(role)
roles.include? role
end
@rondy
rondy / gist:1287061
Created Oct 14, 2011
Dynamic scopes injection
View gist:1287061
module BookScopes
def self.extended(base)
base.instance_exec &scope_definitions
end
def self.included(base)
base.class_exec &scope_definitions
end
View 1_books_controller.rb
class BooksController < ApplicationController
def index
# params = { filters: { genre: "Westerns", sold_out: 1 } }
@books = Book.filtered(params[:filters])
end
end
View acts_as_class_method.rb
module ActsAsClassMethod
unless respond_to? :metaclass
define_method :metaclass do
class << self; self; end
end
end
def acts_as_class_method(*methods)
methods.each do |method|
View has_statuses.rb
module HasStatuses
def has_statuses(*statuses)
self.const_set "Statuses", Module.new
statuses.each { |status| self::Statuses.const_set status.to_s.upcase, status }
self.const_set "ALL_STATUSES", self::Statuses.constants.collect { |constant| self::Statuses.const_get(constant) }
end
Object.send :extend, self
View where_or.rb
module WhereOr
def where_or(*scopes)
conditions = scopes.inject(self) { |scoped, scope| scoped.send(scope) }
conditions = conditions.where_values.map { |where_value| where_value.respond_to?(:to_sql) ? where_value.to_sql : where_value }
conditions = conditions.join(" OR ")
where(conditions)
end
ActiveRecord::Base.send :extend, self
View modularize.rb
require "active_support/inflector"
module Modularizable
def modularize(target, params={})
ancestors = params[:in] || []
ancestors << target
ancestors.collect { |item| item.to_s.camelize }.join("::").constantize
end
@rondy
rondy / paginator.rb
Created Oct 26, 2011
Paginator for Enumerable
View paginator.rb
class Paginator
DEFAULT_PAGE = 1
DEFAULT_PER_PAGE = 5
attr_reader :page
attr_reader :per_page
def paginate(collection, options={})
setup(options)
View gist:2026070
Article.all(
:select => "articles.id, articles.title, slugs.name",
:joins => "INNER JOIN slugs
ON slugs.sluggable_type = 'Article' AND
slugs.sluggable_id = articles.id AND
slugs.id = (SELECT id
FROM slugs
WHERE slugs.sluggable_type = 'Article' AND
slugs.sluggable_id = articles.id
ORDER BY slugs.created_at DESC
@rondy
rondy / gist:2256526
Created Mar 30, 2012
Prompt branch name to deploy on Capistrano (OOP way)
View gist:2256526
namespace :deploy do
task :set_branch do
set :branch, prompt_branch_name
end
before "deploy:update" , "deploy:set_branch"
end
def prompt_branch_name
BranchedDeploy.new.prompt
end
You can’t perform that action at this time.