rendered paste body#!/usr/bin/ruby -wclass ToolBox def initialize(args = {}) @@class_stash ||= {} args.each_pair { |k, v| register_pair(k, v) } end def ToolBox.method_missing(sym, *args) sym_str = sym.to_s if sym_str.gsub!(/=\Z/xm, '').nil? warn 'warning: Class variable @@%s not initialized' % sym unless @@class_stash.has_key?(sym) return @@class_stash[sym] else @@class_stash[sym_str.to_sym] = args return nil end end def method_missing(sym, *args) sym_str = sym.to_s return sym_str.gsub!(/=\Z/xm, '').nil? ? self.instance_variable_get(make_instance_sym(sym)) : register_pair(sym_str, args) end private def make_instance_sym(k) return ('@%s' % k).to_sym end def register_pair(k, v) self.instance_variable_set(make_instance_sym(k), v) endendtb = ToolBox.new(:asdf => 'fff')puts tb.asdfputs tb.asdfgtb.asdfg = 'omg'puts tb.asdfgToolBox.test = 'asdf;'puts ToolBox.testputs ToolBox.asdf