Class: HammerBuilder::Pool
- Inherits:
-
Object
- Object
- HammerBuilder::Pool
- Defined in:
- lib/hammer_builder/pool.rb
Overview
Creating builder instances is expensive, therefore you can use Pool to go around that
Direct Known Subclasses
Defined Under Namespace
Modules: Helper
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
Instance Method Summary collapse
-
#get ⇒ Abstract
This the preferred way of getting new Builder.
-
#initialize(klass) ⇒ Pool
constructor
A new instance of Pool.
-
#release(builder) ⇒ Object
returns
builder
back into pool DONT forget to lose the reference to thebuilder
. - #size ⇒ Object
Constructor Details
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
24 25 26 |
# File 'lib/hammer_builder/pool.rb', line 24 def klass @klass end |
Instance Method Details
#get ⇒ Abstract
This the preferred way of getting new Builder. If you forget to release it, it does not matter - builder gets GCed after you lose reference
35 36 37 38 39 40 41 |
# File 'lib/hammer_builder/pool.rb', line 35 def get if @pool.empty? @klass.new.instance_exec(self) { |origin| @_origin = origin; self } else @pool.pop end end |
#release(builder) ⇒ Object
returns builder
back into pool DONT forget to lose the reference to the builder
45 46 47 48 49 50 |
# File 'lib/hammer_builder/pool.rb', line 45 def release(builder) raise TypeError unless builder.is_a? @klass builder.reset @pool.push builder nil end |
#size ⇒ Object
52 53 54 |
# File 'lib/hammer_builder/pool.rb', line 52 def size @pool.size end |