From: "johanatan " Date: 2005-12-05T10:53:35+09:00 Subject: Re: injecting dynamic methods into a class Ok. The class is ready for consumption. :) Here it is: require 'RMagick' include Magick class ImageBlob def ImageBlob.inject_attrib_assign_methods( attr_and_sizes_hash, consumer_class ) attr_and_sizes_hash.each {|attr_name, max_size| code = %{ def #{attr_name}=( file ) write_attribute( '#{attr_name}', ImageBlob.getBlob( file, #{max_size} )) end } consumer_class.class_eval code } end def ImageBlob.getBlob( file, max_image_size ) begin img = Image.from_blob( file.read ).first if not img raise end img.format = "JPG" if img.rows > max_image_size or img.columns > max_image_size if img.rows > img.columns factor = max_image_size / img.rows.to_f else factor = max_image_size / img.columns.to_f end img = img.scale( factor ) end retVal = img.to_blob GC.start return retVal rescue return nil end end end -- Posted via http://www.ruby-forum.com/.