aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/dependecies_test_helpers.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2012-12-01 04:38:36 -0800
committerXavier Noria <fxn@hashref.com>2012-12-01 04:38:36 -0800
commit60edeceda3317043a43e3b9aa9087dec4b6a81fb (patch)
tree9a3f7c9fab2bfce6c1ceb136e72be133f58fc8df /activesupport/test/dependecies_test_helpers.rb
parent005d910624bbfa724b638426a000c8074d4201a2 (diff)
parent9ee0ffb3602720fceaecc2fbae1c932341482e31 (diff)
downloadrails-60edeceda3317043a43e3b9aa9087dec4b6a81fb.tar.gz
rails-60edeceda3317043a43e3b9aa9087dec4b6a81fb.tar.bz2
rails-60edeceda3317043a43e3b9aa9087dec4b6a81fb.zip
Merge pull request #8246 from urielka/uriel-fixed-8167
Fix #8167 - adding autoloading support for caching
Diffstat (limited to 'activesupport/test/dependecies_test_helpers.rb')
-rw-r--r--activesupport/test/dependecies_test_helpers.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/activesupport/test/dependecies_test_helpers.rb b/activesupport/test/dependecies_test_helpers.rb
new file mode 100644
index 0000000000..4b46d32fb4
--- /dev/null
+++ b/activesupport/test/dependecies_test_helpers.rb
@@ -0,0 +1,27 @@
+module DependeciesTestHelpers
+ 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 \ No newline at end of file