Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

favor composition over inheritance

  • Loading branch information...
commit bca7770e6c05ca2d81302349b02b058ade00d491 1 parent 37c84ed
@tenderlove tenderlove authored
Showing with 20 additions and 5 deletions.
  1. +20 −5 railties/lib/rails/paths.rb
View
25 railties/lib/rails/paths.rb
@@ -43,25 +43,40 @@ module Paths
# root["app/controllers"].existent # => ["/rails/app/controllers"]
#
# Check the <tt>Rails::Paths::Path</tt> documentation for more information.
- class Root < ::Hash
+ class Root
attr_accessor :path
def initialize(path)
raise "Argument should be a String of the physical root path" if path.is_a?(Array)
@current = nil
@path = path
- @root = self
- super()
+ @root = {}
end
def []=(path, value)
value = Path.new(self, path, [value].flatten) unless value.is_a?(Path)
- super(path, value)
+ @root[path] = value
end
def add(path, options={})
with = options[:with] || path
- self[path] = Path.new(self, path, [with].flatten, options)
+ @root[path] = Path.new(self, path, [with].flatten, options)
+ end
+
+ def [](path)
+ @root[path]
+ end
+
+ def values
+ @root.values
+ end
+
+ def keys
+ @root.keys
+ end
+
+ def values_at(*list)
+ @root.values_at(*list)
end
def all_paths
Please sign in to comment.
Something went wrong with that request. Please try again.