Module: Storcs::SummableSizes

Included in:
Device
Defined in:
lib/storcs/summable_sizes.rb

Instance Method Summary collapse

Instance Method Details

#summable_sizes(*columns) ⇒ Object

Avoids defining recursively summable columns again and again. Usage:

class Device
  summable_sizes :size, :used, :blah
  ...
end

For instance, here’s the result for ‘used’ size:

def used
  real_used || children.inject(0) do |memo,child|
    memo + child.used
  end
end


19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/storcs/summable_sizes.rb', line 19

def summable_sizes(*columns)
  columns.each do |column|
    class_eval "      attr_accessor :real_\#{column}\n      def \#{column}\n        real_\#{column} || children.inject(0) do |memo,child|\n          memo + child.\#{column}\n        end\n      end\n    EOF\n  end\nend\n"