21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/compressed_attributes.rb', line 21
def has_compressed_attributes( compressed_attribute_names=[] )
class_eval do
compressed_attribute_names = [compressed_attribute_names] if compressed_attribute_names.is_a? Symbol
compressed_attribute_names.each do |attribute_name|
define_method("#{attribute_name}=".to_sym) do |new_value|
if new_value != nil && new_value[0..1].bytes != [31,139]
new_value = new_value.gzip
end
if defined?(super)
super(new_value)
else
instance_variable_set("@#{attribute_name}".to_sym, new_value)
end
end
define_method(attribute_name.to_sym) do
if respond_to?(:read_attribute)
return nil if read_attribute(attribute_name.to_sym).nil?
read_attribute(attribute_name.to_sym).gunzip
else
return nil if instance_variable_get("@#{attribute_name}".to_sym).nil?
instance_variable_get("@#{attribute_name}").gunzip
end
end
end
end
end
|