class Schematrix::CompilationBudget
Cumulative work allowance shared by every visitor in one compiler.
Constants
- DEFAULT_LIMIT
Attributes
Public Class Methods
Source
# File lib/schematrix/compilation_budget.rb, line 11 def initialize(limit = DEFAULT_LIMIT) unless limit.is_a?(Integer) && limit.positive? raise ArgumentError, "max_compilation_work must be a positive integer" end @limit = limit @remaining = limit end
Public Instance Methods
Source
# File lib/schematrix/compilation_budget.rb, line 20 def consume!(amount = 1) if amount > @remaining raise CompilationLimitError, "Compilation work limit exceeded (#{@limit})" end @remaining -= amount end