aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-09-04 00:52:07 +0200
committerJosé Valim <jose.valim@gmail.com>2010-09-04 00:52:07 +0200
commit6f194bb3a919e074885751f41aba0848937e37f1 (patch)
tree53ea559b9cafb85b14424c66947ead48a531f3f5 /railties
parent23a9455962f0362cf242ffa96db7a9e7fdb0804b (diff)
downloadrails-6f194bb3a919e074885751f41aba0848937e37f1.tar.gz
rails-6f194bb3a919e074885751f41aba0848937e37f1.tar.bz2
rails-6f194bb3a919e074885751f41aba0848937e37f1.zip
Small tidy up on Rails::Engine.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/engine.rb97
1 files changed, 49 insertions, 48 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index e10980a6d9..c749fdfbe8 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -121,29 +121,29 @@ module Rails
# If you don't specify endpoint, routes will be used as default endpoint. You can use them
# just like you use application's routes:
#
- # # ENGINE/config/routes.rb
- # MyEngine::Engine.routes.draw do
- # match "/" => "posts#index"
- # end
+ # # ENGINE/config/routes.rb
+ # MyEngine::Engine.routes.draw do
+ # match "/" => "posts#index"
+ # end
#
# == Mount priority
#
# Note that now there can be more than one router in you application and it's better to avoid
# passing requests through many routers. Consider such situation:
#
- # MyRailsApp::Application.routes.draw do
- # mount MyEngine::Engine => "/blog"
- # match "/blog/omg" => "main#omg"
- # end
+ # MyRailsApp::Application.routes.draw do
+ # mount MyEngine::Engine => "/blog"
+ # match "/blog/omg" => "main#omg"
+ # end
#
# MyEngine is mounted at "/blog" path and additionaly "/blog/omg" points application's controller.
# In such situation request to "/blog/omg" will go through MyEngine and if there is no such route
# in Engine's routes, it will be dispatched to "main#omg". It's much better to swap that:
#
- # MyRailsApp::Application.routes.draw do
- # match "/blog/omg" => "main#omg"
- # mount MyEngine::Engine => "/blog"
- # end
+ # MyRailsApp::Application.routes.draw do
+ # match "/blog/omg" => "main#omg"
+ # mount MyEngine::Engine => "/blog"
+ # end
#
# Now, Engine will get only requests that were not handled by application.
#
@@ -153,11 +153,11 @@ module Rails
# to application's public directory. To simplify generating paths for assets, you can set asset_path
# for an Engine:
#
- # module MyEngine
- # class Engine < Rails::Engine
- # config.asset_path = "/my_engine/%s"
+ # module MyEngine
+ # class Engine < Rails::Engine
+ # config.asset_path = "/my_engine/%s"
+ # end
# end
- # end
#
# With such config, asset paths will be automatically modified inside Engine:
# image_path("foo.jpg") #=> "/my_engine/images/foo.jpg"
@@ -172,11 +172,11 @@ module Rails
# Engine name is set by default based on class name. For MyEngine::Engine it will be my_engine_engine.
# You can change it manually it manually using engine_name method:
#
- # module MyEngine
- # class Engine < Rails::Engine
- # engine_name "my_engine"
+ # module MyEngine
+ # class Engine < Rails::Engine
+ # engine_name "my_engine"
+ # end
# end
- # end
#
# == Namespaced Engine
#
@@ -186,20 +186,20 @@ module Rails
# engine provides its own routes, you don't want that. To isolate engine's stuff from application
# you can use namespace method:
#
- # module MyEngine
- # class Engine < Rails::Engine
- # namespace MyEngine
+ # module MyEngine
+ # class Engine < Rails::Engine
+ # namespace MyEngine
+ # end
# end
- # end
#
# With such Engine, everything that is inside MyEngine module, will be isolated from application.
#
# Consider such controller:
#
- # module MyEngine
- # class FooController < ActionController::Base
+ # module MyEngine
+ # class FooController < ActionController::Base
+ # end
# end
- # end
#
# If engine is marked as namespaced, FooController has access only to helpers from engine and
# url_helpers from MyEngine::Engine.routes.
@@ -214,27 +214,27 @@ module Rails
# url_helpers inside application. When you mount Engine in application's routes special helper is
# created to allow doing that. Consider such scenario:
#
- # # APP/config/routes.rb
- # MyApplication::Application.routes.draw do
- # mount MyEngine::Engine => "/my_engine", :as => "my_engine"
- # match "/foo" => "foo#index"
- # end
+ # # APP/config/routes.rb
+ # MyApplication::Application.routes.draw do
+ # mount MyEngine::Engine => "/my_engine", :as => "my_engine"
+ # match "/foo" => "foo#index"
+ # end
#
# Now, you can use my_engine helper:
#
- # class FooController < ApplicationController
- # def index
- # my_engine.root_url #=> /my_engine/
+ # class FooController < ApplicationController
+ # def index
+ # my_engine.root_url #=> /my_engine/
+ # end
# end
- # end
#
# There is also 'app' helper that gives you access to application's routes inside Engine:
#
- # module MyEngine
- # class BarController
- # app.foo_path #=> /foo
+ # module MyEngine
+ # class BarController
+ # app.foo_path #=> /foo
+ # end
# end
- # end
#
# Note that :as option takes engine_name as default, so most of the time you can ommit it.
#
@@ -288,7 +288,6 @@ module Rails
end
def namespace(mod)
- # TODO: extract that into a module
engine_name(generate_railtie_name(mod))
_railtie = self
@@ -386,7 +385,7 @@ module Rails
# per engine and get the engine as a block parameter
initializer :set_autoload_paths, :before => :bootstrap_hook do |app|
ActiveSupport::Dependencies.autoload_paths.unshift(*_all_autoload_paths)
- ActiveSupport::Dependencies.autoload_once_paths.unshift(*config.autoload_once_paths)
+ ActiveSupport::Dependencies.autoload_once_paths.unshift(*_all_autoload_once_paths)
# Freeze so future modifications will fail rather than do nothing mysteriously
config.autoload_paths.freeze
@@ -419,11 +418,9 @@ module Rails
initializer :add_view_paths do
views = paths.app.views.to_a
- ActiveSupport.on_load(:action_controller) do
- prepend_view_path(views)
- end
- ActiveSupport.on_load(:action_mailer) do
- prepend_view_path(views)
+ unless views.empty?
+ ActiveSupport.on_load(:action_controller){ prepend_view_path(views) }
+ ActiveSupport.on_load(:action_mailer){ prepend_view_path(views) }
end
end
@@ -433,7 +430,7 @@ module Rails
end
initializer :append_asset_paths do
- config.asset_path = "/#{engine_name}%s" unless config.asset_path
+ config.asset_path ||= "/#{engine_name}%s"
public_path = config.paths.public.to_a.first
if config.compiled_asset_path && File.exist?(public_path)
@@ -479,6 +476,10 @@ module Rails
ActionDispatch::MiddlewareStack.new
end
+ def _all_autoload_once_paths
+ config.autoload_once_paths
+ end
+
def _all_autoload_paths
@_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq
end