In production mode and when running the frozen specs, clover_freeze now calls freeze on all autoloaded constants, and Clover is an autoloaded constant. Both the specs and config.ru call clover_freeze unconditionally. This also removes the override of Clover.freeze. In production and when running the frozen specs, it would call Sequel::Model.freeze_descendants and DB.freeze. The freezing of all autoloaded constants handles DB.freeze, and clover_freeze calls Sequel::Model.freeze_descendants before freezing all autoloaded constants. This does remove the `Sequel::Model.descendants.each(&:finalize_associations)` when running non-frozen specs, but that's solely an optimization and I don't think it is worth the complexity. The `return self if frozen?` code was added to work around a bug in autoload_hash_branches, where Roda.freeze would break if you called it the second time on the same object. Now that Clover.freeze is only called once, it is not needed.
10 lines
167 B
Ruby
10 lines
167 B
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "loader"
|
|
|
|
clover_freeze
|
|
|
|
run(Config.development? ? Unreloader : Clover.app)
|
|
|
|
Tilt.finalize! unless Config.development?
|