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:
parent
7ec947d59c
commit
d56984c016
2 changed files with 28 additions and 4 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue