module StatelessModule
Constants
- VERSION
Public Class Methods
extended(base)
click to toggle source
# File lib/stateless_module.rb, line 14 def extended(base) raise_stateless_module_error end
included(base)
click to toggle source
# File lib/stateless_module.rb, line 3 def included(base) base.send(:extend, base) freeze_when_module_completes(base) base.class_eval do class << self def included(base) raise_stateless_module_error end def extended(base) raise_stateless_module_error end ####### private ####### def raise_stateless_module_error raise "#{self.name} is a Stateless Module. " \ "Don't include it elsewhere." end end end end
Private Class Methods
freeze_when_module_completes(base)
click to toggle source
# File lib/stateless_module.rb, line 38 def freeze_when_module_completes(base) TracePoint.trace(:end) do |t| if base == t.self base.freeze base.instance_variables.each do |v| base.instance_variable_get(v).freeze end base.class_variables.each do |v| base.class_variable_get(v).freeze end t.disable end end end
raise_stateless_module_error()
click to toggle source
# File lib/stateless_module.rb, line 22 def raise_stateless_module_error raise "#{self.name} is a Stateless Module. " \ "Don't include it elsewhere." end