diff options
author | Jose and Yehuda <wycats@gmail.com> | 2012-04-25 16:06:20 -0500 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2012-04-25 16:07:17 -0500 |
commit | 6acebb38bc0637bc05c19d87f8767f16ce79189b (patch) | |
tree | e37fa39f516e16c1d36e3b5202e9231c56aa4305 /railties/lib/rails | |
parent | 3c100cfe8ed5a875b0bbdc8fa4e8f2b0cbf78676 (diff) | |
download | rails-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.rb | 3 | ||||
-rw-r--r-- | railties/lib/rails/engine/configuration.rb | 3 | ||||
-rw-r--r-- | railties/lib/rails/paths.rb | 12 |
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 |