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

Make rails configuration's path object's root lazy

This commit is contained in:
Yehuda Katz + Carl Lerche 2009-10-13 17:47:18 -07:00
parent 7ec947d59c
commit d56984c016
2 changed files with 28 additions and 4 deletions

View file

@ -19,14 +19,15 @@ module Rails
class Root
include PathParent
attr_reader :path
attr_accessor :path
def initialize(path)
raise unless path.is_a?(String)
raise if path.is_a?(Array)
@children = {}
# TODO: Move logic from set_root_path initializer
@path = File.expand_path(path)
@path = path
@root = self
@all_paths = []
end
@ -123,8 +124,10 @@ module Rails
end
def paths
raise "You need to set a path root" unless @root.path
@paths.map do |path|
path.index('/') == 0 ? path : File.join(@root.path, path)
path.index('/') == 0 ? path : File.expand_path(File.join(@root.path, path))
end
end

View file

@ -12,11 +12,32 @@ class PathsTest < ActiveSupport::TestCase
assert_equal "/fiz/baz", root.path
end
test "the paths object can be initialized with nil" do
assert_nothing_raised do
Rails::Application::Root.new(nil)
end
end
test "a paths object initialized with nil can be updated" do
root = Rails::Application::Root.new(nil)
root.app = "app"
root.path = "/root"
assert_equal ["/root/app"], root.app.to_a
end
test "creating a root level path" do
@root.app = "/foo/bar"
assert_equal ["/foo/bar"], @root.app.to_a
end
test "raises exception if root path never set" do
root = Rails::Application::Root.new(nil)
root.app = "app"
assert_raises RuntimeError do
root.app.to_a
end
end
test "creating a root level path without assignment" do
@root.app "/foo/bar"
assert_equal ["/foo/bar"], @root.app.to_a