module Berater::DSL
Constants
- KEYWORDS
Public Instance Methods
eval(&block)
click to toggle source
# File lib/berater/dsl.rb, line 24 def eval &block @keywords ||= Class.new do # create a class where DSL keywords are methods KEYWORDS.each do |keyword| define_singleton_method(keyword) { keyword } end end install @keywords.class_eval &block ensure uninstall end
new(key, capacity = nil, **opts, &block)
click to toggle source
Calls superclass method
# File lib/berater/dsl.rb, line 4 def new(key, capacity = nil, **opts, &block) if capacity.nil? unless block_given? raise ArgumentError, 'expected either capacity or block' end capacity, more_opts = DSL.eval(&block) opts.merge!(more_opts) if more_opts else if block_given? raise ArgumentError, 'expected either capacity or block, not both' end end super(key, capacity, **opts) end
Private Instance Methods
at_once()
click to toggle source
# File lib/berater/dsl.rb, line 51 def at_once [ self ] end
install()
click to toggle source
# File lib/berater/dsl.rb, line 44 def install Integer.class_eval do def per(unit) [ self, interval: unit ] end alias every per def at_once [ self ] end alias concurrently at_once alias at_a_time at_once end end
per(unit)
click to toggle source
# File lib/berater/dsl.rb, line 46 def per(unit) [ self, interval: unit ] end
uninstall()
click to toggle source
# File lib/berater/dsl.rb, line 59 def uninstall Integer.remove_method :per Integer.remove_method :every Integer.remove_method :at_once Integer.remove_method :concurrently Integer.remove_method :at_a_time end