aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails
diff options
context:
space:
mode:
authorJose and Yehuda <wycats@gmail.com>2012-04-25 16:06:20 -0500
committerYehuda Katz <wycats@gmail.com>2012-04-25 16:07:17 -0500
commit6acebb38bc0637bc05c19d87f8767f16ce79189b (patch)
treee37fa39f516e16c1d36e3b5202e9231c56aa4305 /railties/lib/rails
parent3c100cfe8ed5a875b0bbdc8fa4e8f2b0cbf78676 (diff)
downloadrails-6acebb38bc0637bc05c19d87f8767f16ce79189b.tar.gz
rails-6acebb38bc0637bc05c19d87f8767f16ce79189b.tar.bz2
rails-6acebb38bc0637bc05c19d87f8767f16ce79189b.zip
Allow loading external route files from the router
This feature enables the ability to load an external routes file from the router via: draw :filename External routes files go in +config/routes+. This feature works in both engines and applications.
Diffstat (limited to 'railties/lib/rails')
-rw-r--r--railties/lib/rails/engine.rb3
-rw-r--r--railties/lib/rails/engine/configuration.rb3
-rw-r--r--railties/lib/rails/paths.rb12
3 files changed, 15 insertions, 3 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 43ee396cbe..3b302b23a7 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -487,6 +487,7 @@ module Rails
def routes
@routes ||= ActionDispatch::Routing::RouteSet.new
+ @routes.draw_paths.concat paths["config/routes"].paths
@routes.append(&Proc.new) if block_given?
@routes
end
@@ -544,7 +545,7 @@ module Rails
end
initializer :add_routing_paths do |app|
- paths = self.paths["config/routes"].existent
+ paths = self.paths["config/routes.rb"].existent
if routes? || paths.any?
app.routes_reloader.paths.unshift(*paths)
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index d7405cb519..9f7c5f8704 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -52,7 +52,8 @@ module Rails
paths.add "config/environments", :glob => "#{Rails.env}.rb"
paths.add "config/initializers", :glob => "**/*.rb"
paths.add "config/locales", :glob => "*.{rb,yml}"
- paths.add "config/routes", :with => "config/routes.rb"
+ paths.add "config/routes.rb"
+ paths.add "config/routes", :glob => "**/*.rb"
paths.add "db"
paths.add "db/migrate"
paths.add "db/seeds", :with => "db/seeds.rb"
diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb
index dd1790299d..fced6f8896 100644
--- a/railties/lib/rails/paths.rb
+++ b/railties/lib/rails/paths.rb
@@ -1,3 +1,5 @@
+require "pathname"
+
module Rails
module Paths
# This object is an extended hash that behaves as root of the <tt>Rails::Paths</tt> system.
@@ -114,7 +116,7 @@ module Rails
class Path
include Enumerable
- attr_reader :path
+ attr_reader :path, :root
attr_accessor :glob
def initialize(root, current, paths, options = {})
@@ -180,6 +182,14 @@ module Rails
@paths
end
+ def paths
+ raise "You need to set a path root" unless @root.path
+
+ map do |p|
+ Pathname.new(@root.path).join(p)
+ end
+ end
+
# Expands all paths against the root and return all unique values.
def expanded
raise "You need to set a path root" unless @root.path