diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb index 7a65188a9a..d303212f52 100644 --- a/railties/lib/rails/paths.rb +++ b/railties/lib/rails/paths.rb @@ -116,36 +116,20 @@ module Rails @paths.concat paths end - def autoload_once! - @autoload_once = true - end + %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 - end + def skip_#{m}! + @#{m} = false + end - def eager_load! - @eager_load = true - 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 + def #{m}? + @#{m} + end + RUBY end def paths diff --git a/railties/test/paths_test.rb b/railties/test/paths_test.rb index 008247cb1a..80fae8c543 100644 --- a/railties/test/paths_test.rb +++ b/railties/test/paths_test.rb @@ -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?