Skip to content

Instantly share code, notes, and snippets.

View stefanoc's full-sized avatar

Stefano Cobianchi stefanoc

View GitHub Profile
require "thread"
module Synchronizable
def self.included(base)
base.send(:include, InstanceMethods)
base.send(:extend, ClassMethods)
end
module ClassMethods
def synchronized(meth)
require "thread"
module Synchronization
class Proxy
instance_methods.each { |m| undef_method m unless m =~ /^__|extend/ }
def initialize(target)
@__target__ = target
end
class Aif
def initialize(cond)
@cond = cond
end
def else
yield unless @cond
end
end
require "digest/sha1"
module AuthenticationModel
def self.included(base)
base.send(:include, InstanceMethods)
base.send(:extend, ClassMethods)
base.send(:validates_presence_of, :email, :message => "L'indirizzo email è richiesto.")
base.send(:validates_presence_of, :password, :if => :password_required?, :message => "La password è richiesta.")
base.send(:validates_uniqueness_of, :email, :case_sensitive => false, :message => "Questo indirizzo email è già presente.")
module Decorating
def decorate(meth_id, *modules)
alias_method("__#{meth_id}__", meth_id)
define_method(meth_id) do |*args|
result = send("__#{meth_id}__", *args)
modules.each { |m| result.extend(m) }
return result
end
end
class ActiveSupport::TestCase
class << self
def context(name, &block)
_context_stack_.unshift name.gsub(/\s+/,'_')
define_callbacks :"setup_#{_current_context_}", :"teardown_#{_current_context_}"
class_eval(&block)
_context_stack_.pop
end
def test_with_context(name, &block)
@stefanoc
stefanoc / ffexport.rb
Last active September 24, 2015 12:28
A simple script to export your FF data, based on http://bit.ly/fQ8Ocv
require "json"
require "open-uri"
require "optparse"
require "fileutils"
require "cgi"
class FriendfeedExporter
attr_reader :all_entries
def initialize(options)
@stefanoc
stefanoc / calendar.js
Created June 6, 2011 15:07
Simple Calendar
Calendar = Class.create({
MONTHS : ["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"],
DAYS : ["dom", "lun", "mar", "mer", "gio", "ven", "sab"],
MONTH_DAYS : [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
year : null,
month : null,
specialDates : null,
initialize : function(_special) {
@stefanoc
stefanoc / choose.rb
Created July 19, 2011 12:42
Compact if/else expression
class TrueClass
def choose(if_true, if_false)
if_true
end
end
class FalseClass
def choose(if_true, if_false)
if_false
end
@stefanoc
stefanoc / protocol.rb
Last active August 29, 2015 14:04
Protocol implementation in Ruby
class Protocol
attr_reader :name, :ancestors
def initialize(name, ancestors, block)
@name = name
@ancestors = ancestors
@methods = []
instance_exec(&block)
end