class Console1984::Refrigerator

Freezes classes to prevent tampering them

Public Instance Methods

freeze_all() click to toggle source
# File lib/console1984/refrigerator.rb, line 5
def freeze_all
  eager_load_all_classes
  freeze_internal_instances # internal modules and classes are frozen by including Console1984::Freezable
  freeze_external_modules_and_classes

  Console1984::Freezeable.freeze_all
end

Private Instance Methods

eager_load_all_classes() click to toggle source
# File lib/console1984/refrigerator.rb, line 27
def eager_load_all_classes
  Rails.application.eager_load! unless Rails.application.config.eager_load
  Console1984.class_loader.eager_load
end
external_modules_and_classes_to_freeze() click to toggle source
# File lib/console1984/refrigerator.rb, line 22
def external_modules_and_classes_to_freeze
  # Not using a constant because we want this to run lazily (console-dependant dependencies might not be loaded).
  [Parser::CurrentRuby]
end
freeze_external_modules_and_classes() click to toggle source
# File lib/console1984/refrigerator.rb, line 18
def freeze_external_modules_and_classes
  external_modules_and_classes_to_freeze.each { |klass| klass.include(Console1984::Freezeable) }
end
freeze_internal_instances() click to toggle source
# File lib/console1984/refrigerator.rb, line 14
def freeze_internal_instances
  Console1984.config.freeze unless Console1984.config.test_mode
end