1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Add skip_eager_load!, skip_autoload! and friends to path objects.

This commit is contained in:
José Valim 2010-07-17 09:54:34 +02:00
parent 38f1ea8fe2
commit c6e2058637
2 changed files with 34 additions and 30 deletions

View file

@ -116,36 +116,20 @@ module Rails
@paths.concat paths
end
def autoload_once!
@autoload_once = true
%w(autoload_once eager_load autoload load_path).each do |m|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{m}!
@#{m} = true
end
def autoload_once?
@autoload_once
def skip_#{m}!
@#{m} = false
end
def eager_load!
@eager_load = true
def #{m}?
@#{m}
end
def eager_load?
@eager_load
end
def autoload!
@autoload = true
end
def autoload?
@autoload
end
def load_path!
@load_path = true
end
def load_path?
@load_path
RUBY
end
def paths

View file

@ -118,13 +118,23 @@ class PathsTest < ActiveSupport::TestCase
assert_raise(RuntimeError) { @root << "/biz" }
end
test "it is possible to add a path that should be loaded only once" do
test "it is possible to add a path that should be autoloaded only once" do
@root.app = "/app"
@root.app.autoload_once!
assert @root.app.autoload_once?
assert @root.autoload_once.include?(@root.app.paths.first)
end
test "it is possible to remove a path that should be autoloaded only once" do
@root.app = "/app"
@root.app.autoload_once!
assert @root.app.autoload_once?
@root.app.skip_autoload_once!
assert !@root.app.autoload_once?
assert !@root.autoload_once.include?(@root.app.paths.first)
end
test "it is possible to add a path without assignment and specify it should be loaded only once" do
@root.app "/app", :autoload_once => true
assert @root.app.autoload_once?
@ -152,13 +162,23 @@ class PathsTest < ActiveSupport::TestCase
assert_equal 2, @root.autoload_once.size
end
test "it is possible to mark a path as eager" do
test "it is possible to mark a path as eager loaded" do
@root.app = "/app"
@root.app.eager_load!
assert @root.app.eager_load?
assert @root.eager_load.include?(@root.app.paths.first)
end
test "it is possible to skip a path from eager loading" do
@root.app = "/app"
@root.app.eager_load!
assert @root.app.eager_load?
@root.app.skip_eager_load!
assert !@root.app.eager_load?
assert !@root.eager_load.include?(@root.app.paths.first)
end
test "it is possible to add a path without assignment and mark it as eager" do
@root.app "/app", :eager_load => true
assert @root.app.eager_load?