2013-03-12 01:03:32 -04:00
|
|
|
module DependenciesTestHelpers
|
2012-11-16 19:05:53 -05:00
|
|
|
def with_loading(*from)
|
|
|
|
old_mechanism, ActiveSupport::Dependencies.mechanism = ActiveSupport::Dependencies.mechanism, :load
|
|
|
|
this_dir = File.dirname(__FILE__)
|
|
|
|
parent_dir = File.dirname(this_dir)
|
|
|
|
path_copy = $LOAD_PATH.dup
|
|
|
|
$LOAD_PATH.unshift(parent_dir) unless $LOAD_PATH.include?(parent_dir)
|
|
|
|
prior_autoload_paths = ActiveSupport::Dependencies.autoload_paths
|
|
|
|
ActiveSupport::Dependencies.autoload_paths = from.collect { |f| "#{this_dir}/#{f}" }
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
$LOAD_PATH.replace(path_copy)
|
|
|
|
ActiveSupport::Dependencies.autoload_paths = prior_autoload_paths
|
|
|
|
ActiveSupport::Dependencies.mechanism = old_mechanism
|
|
|
|
ActiveSupport::Dependencies.explicitly_unloadable_constants = []
|
|
|
|
end
|
|
|
|
|
|
|
|
def with_autoloading_fixtures(&block)
|
|
|
|
with_loading 'autoloading_fixtures', &block
|
|
|
|
end
|
|
|
|
|
|
|
|
def remove_constants(*constants)
|
|
|
|
constants.each do |constant|
|
|
|
|
Object.send(:remove_const, constant) if Object.const_defined?(constant)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|