Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
module ActiveRecord class Base def self.method_missing_with_examples(method, *args, &blk) @custom_examples ||= {} if match = method.to_s.match(/(\w*)_example/) if block_given? @custom_examples[match[0]] = blk elsif @custom_examples[match[0]] blk = @custom_examples[match[0]] input = blk.call(*args) if args[0].is_a?(Hash) input.merge!(args[0]) end self.create!(input) else method_missing_without_examples(method, args, &blk) end else method_missing_without_examples(method, args, &blk) end end class << self alias method_missing_without_examples method_missing alias method_missing method_missing_with_examples end def self.example(klass_name={}, attributes={}) if klass_name.is_a? Symbol klass = Object.const_get(klass_name.to_s.camelize) klass.example({:full => @full}.merge(attributes)) else attributes = klass_name @full = attributes.delete(:full) save = attributes.delete(:save) if @minimum_example_blk values = @minimum_example_blk.call(attributes) attributes = values.merge(attributes) if values.is_a?(Hash) end obj = self.new(attributes) obj.save! unless save === false if @full && @optional_example_blk values = @optional_example_blk.call(obj) obj.update_attributes(values.merge(attributes)) if values.is_a?(Hash) end return obj end end def self.minimum_example(args={}, &blk) if blk @minimum_example_blk = blk else @minimum_example_blk = Proc.new { args } end end def self.optional_example(args={}, &blk) if blk @optional_example_blk = blk else @optional_example_blk = Proc.new { args } end end end end
This paste will be private.
From the Design Piracy series on my blog: