aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_controller/railtie.rb10
-rw-r--r--actionpack/lib/action_controller/railties/url_helpers.rb14
-rw-r--r--actionpack/lib/action_dispatch/routing.rb1
-rw-r--r--actionpack/lib/action_dispatch/routing/routes.rb5
-rw-r--r--actionpack/lib/action_dispatch/testing/assertions/routing.rb2
-rw-r--r--actionpack/lib/action_dispatch/testing/integration.rb2
-rw-r--r--actionpack/lib/action_view/helpers/atom_feed_helper.rb2
-rw-r--r--railties/lib/rails/test_help.rb6
-rw-r--r--railties/test/application/url_generation_test.rb42
9 files changed, 72 insertions, 12 deletions
diff --git a/actionpack/lib/action_controller/railtie.rb b/actionpack/lib/action_controller/railtie.rb
index 5a16d82e49..3df70d4a4d 100644
--- a/actionpack/lib/action_controller/railtie.rb
+++ b/actionpack/lib/action_controller/railtie.rb
@@ -1,5 +1,5 @@
-require "action_controller"
require "rails"
+require "action_controller"
require "action_view/railtie"
require "active_support/core_ext/class/subclasses"
@@ -8,6 +8,8 @@ module ActionController
railtie_name :action_controller
require "action_controller/railties/log_subscriber"
+ require "action_controller/railties/url_helpers"
+
log_subscriber ActionController::Railties::LogSubscriber.new
initializer "action_controller.logger" do
@@ -27,5 +29,9 @@ module ActionController
initializer "action_controller.set_helpers_path" do |app|
ActionController::Base.helpers_path = app.config.paths.app.helpers.to_a
end
+
+ initializer "action_controller.url_helpers" do |app|
+ ActionController::Base.extend ::ActionController::Railtie::UrlHelpers.with(app.routes)
+ end
end
-end
+end \ No newline at end of file
diff --git a/actionpack/lib/action_controller/railties/url_helpers.rb b/actionpack/lib/action_controller/railties/url_helpers.rb
new file mode 100644
index 0000000000..354d3fa898
--- /dev/null
+++ b/actionpack/lib/action_controller/railties/url_helpers.rb
@@ -0,0 +1,14 @@
+module ActionController
+ class Railtie
+ module UrlHelpers
+ def self.with(router)
+ Module.new do
+ define_method(:inherited) do |klass|
+ super
+ klass.send(:include, router.named_url_helpers)
+ end
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/actionpack/lib/action_dispatch/routing.rb b/actionpack/lib/action_dispatch/routing.rb
index 2cc7fe5344..5bc3205c51 100644
--- a/actionpack/lib/action_dispatch/routing.rb
+++ b/actionpack/lib/action_dispatch/routing.rb
@@ -204,7 +204,6 @@ module ActionDispatch
autoload :DeprecatedMapper, 'action_dispatch/routing/deprecated_mapper'
autoload :Mapper, 'action_dispatch/routing/mapper'
autoload :Route, 'action_dispatch/routing/route'
- autoload :Routes, 'action_dispatch/routing/routes'
autoload :RouteSet, 'action_dispatch/routing/route_set'
autoload :UrlFor, 'action_dispatch/routing/url_for'
diff --git a/actionpack/lib/action_dispatch/routing/routes.rb b/actionpack/lib/action_dispatch/routing/routes.rb
deleted file mode 100644
index 34afada9c9..0000000000
--- a/actionpack/lib/action_dispatch/routing/routes.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# A singleton that stores the current route set
-# ActionDispatch::Routing::Routes = ActionDispatch::Routing::RouteSet.new
-
-# To preserve compatibility with pre-3.0 Rails action_controller/deprecated.rb
-# defines ActionDispatch::Routing::Routes as an alias
diff --git a/actionpack/lib/action_dispatch/testing/assertions/routing.rb b/actionpack/lib/action_dispatch/testing/assertions/routing.rb
index f281febbc5..17caa2e030 100644
--- a/actionpack/lib/action_dispatch/testing/assertions/routing.rb
+++ b/actionpack/lib/action_dispatch/testing/assertions/routing.rb
@@ -125,7 +125,7 @@ module ActionDispatch
end
# A helper to make it easier to test different route configurations.
- # This method temporarily replaces ActionDispatch::Routing::Routes
+ # This method temporarily replaces @router
# with a new RouteSet instance.
#
# The new instance is yielded to the passed block. Typically the block
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb
index 3b9d8b0318..3bd9502e91 100644
--- a/actionpack/lib/action_dispatch/testing/integration.rb
+++ b/actionpack/lib/action_dispatch/testing/integration.rb
@@ -188,11 +188,9 @@ module ActionDispatch
unless defined? @named_routes_configured
# install the named routes in this session instance.
klass = singleton_class
- # ActionDispatch::Routing::Routes.install_helpers(klass)
# the helpers are made protected by default--we make them public for
# easier access during testing and troubleshooting.
- # klass.module_eval { public *ActionDispatch::Routing::Routes.named_routes.helpers }
@named_routes_configured = true
end
end
diff --git a/actionpack/lib/action_view/helpers/atom_feed_helper.rb b/actionpack/lib/action_view/helpers/atom_feed_helper.rb
index 4305a0d5f5..a26a8c9b4b 100644
--- a/actionpack/lib/action_view/helpers/atom_feed_helper.rb
+++ b/actionpack/lib/action_view/helpers/atom_feed_helper.rb
@@ -8,7 +8,7 @@ module ActionView
# Full usage example:
#
# config/routes.rb:
- # ActionDispatch::Routing::Routes.draw do |map|
+ # Basecamp::Application.routes.draw do |map|
# map.resources :posts
# map.root :controller => "posts"
# end
diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb
index f9aa018cab..dbb1b76b95 100644
--- a/railties/lib/rails/test_help.rb
+++ b/railties/lib/rails/test_help.rb
@@ -24,6 +24,12 @@ if defined?(ActiveRecord)
end
end
+class ActionController::TestCase
+ setup do
+ @router = Rails.application.routes
+ end
+end
+
begin
require_library_or_gem 'ruby-debug'
Debugger.start
diff --git a/railties/test/application/url_generation_test.rb b/railties/test/application/url_generation_test.rb
new file mode 100644
index 0000000000..a0d9ff7a3a
--- /dev/null
+++ b/railties/test/application/url_generation_test.rb
@@ -0,0 +1,42 @@
+require 'isolation/abstract_unit'
+
+module ApplicationTests
+ class UrlGenerationTest < Test::Unit::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ def app
+ Rails.application
+ end
+
+ test "it works" do
+ boot_rails
+ require "rails"
+ require "action_controller/railtie"
+
+ class MyApp < Rails::Application
+ config.action_controller.session = { :key => "_myapp_session", :secret => "3b7cd727ee24e8444053437c36cc66c4" }
+ end
+
+ MyApp.initialize!
+
+ class ::ApplicationController < ActionController::Base
+ end
+
+ class ::OmgController < ::ApplicationController
+ def index
+ render :text => omg_path
+ end
+ end
+
+ MyApp.routes.draw do
+ match "/" => "omg#index", :as => :omg
+ end
+
+ require 'rack/test'
+ extend Rack::Test::Methods
+
+ get "/"
+ assert_equal "/", last_response.body
+ end
+ end
+end