Skip to content

Instantly share code, notes, and snippets.

View jhchabran's full-sized avatar
🧀

JH Chabran jhchabran

🧀
View GitHub Profile
@jhchabran
jhchabran / gist:779437
Created January 14, 2011 10:07
Little experiment with cache keys
module Cachable
def self.included(receiver)
receiver.class_attribute :cachable
receiver.cachable = Keystore.new
receiver.send(:helper_method, :cachable)
end
class Keystore
def define name, &block
(class << self; self; end).send :define_method, name, &block
u := Usine clone
u declare("user", user,
user firstname := "John"
user lastname := "Connor"
user age := suite(a, a+2)
)
Usine := Object clone do (
/* (...) */
declare := method (factory,
object := Object clone
call sender setSlot(call argAt(1) name, object)
call sender appendProto(DummyObject)
call evalArgAt(2)
factories setSlot(factory,object)
)
Usine := Object clone do (
/* (...) */
create := method (factory,
dummy := factories getSlot(factory) clone
parentProto := dummy protos first
parentProto slotNames foreach(slotName,
value := nil
if(parentProto getSlot(slotName) type == "Suite",
if(suites getSlot(slotName),
Factory.define(:user) do |u|
u.firstname "John"
u.lastname "Connor"
u.sequence(:age) { |i| i ]
end
u := Usine clone
u declare("user", user,
user firstname := "John"
user lastname := "Connor"
user age := suite(a, a+2)
)
a := u create("user")
b := u create("user")
Usine := Object clone do (
DummyObject := Object clone do (
Suite := Object clone do (
variantName := nil
bodyBlock := nil
eval := method(x,
context := Object clone
context setSlot(variantName, x)
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe Snapshot do
before(:each) do
@observer = PretendObserver.new(@string_io = StringIO.new("","w"))
end
it "should create a snapshot ready to be applied" do
Snapshot.new(:size => "4G", :path => '/dev/vg00/pwet-disk', :name => 'pwet')
end
# Autocomplete handler for all core controllers.
#----------------------------------------------------------------------------
def auto_complete
@query = params[:auto_complete_query]
@auto_complete = hook(:auto_complete, self, :query => @query, :user => @current_user)
if @auto_complete.empty?
@auto_complete = self.controller_name.classify.constantize.my(:user => @current_user, :limit => 10).search(@query)
else
@auto_complete = @auto_complete.last
end
module Keywordable
module ClassMethods
def keyword(symbol, proc)
write_inheritable_attribute :keywords, {} unless read_inheritable_attribute :keywords
read_inheritable_attribute(:keywords)[symbol] = proc
end
end
module InstanceMethods
def keywords