Skip to content

Commit

Permalink
Added new keyword to specify load paths as being component based. Add…
Browse files Browse the repository at this point in the history
…ed better logging for component calls

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@713 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
dhh committed Feb 20, 2005
1 parent beb2875 commit 12a7573
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 8 deletions.
16 changes: 15 additions & 1 deletion actionpack/lib/action_controller/base.rb
Expand Up @@ -224,7 +224,7 @@ class Base


# Template root determines the base from which template references will be made. So a call to render("test/template") # Template root determines the base from which template references will be made. So a call to render("test/template")
# will be converted to "#{template_root}/test/template.rhtml". # will be converted to "#{template_root}/test/template.rhtml".
cattr_accessor :template_root class_inheritable_accessor :template_root


# The logger is used for generating information on the action run-time (including benchmarking) if available. # The logger is used for generating information on the action run-time (including benchmarking) if available.
# Can be set to nil for no logging. Compatible with both Ruby's own Logger and Log4r loggers. # Can be set to nil for no logging. Compatible with both Ruby's own Logger and Log4r loggers.
Expand Down Expand Up @@ -298,6 +298,20 @@ def hidden_actions
def hide_actions(*names) def hide_actions(*names)
write_inheritable_attribute(:hidden_actions, hidden_actions | names.collect {|n| n.to_s}) write_inheritable_attribute(:hidden_actions, hidden_actions | names.collect {|n| n.to_s})
end end

# Set the template root to be one directory behind the root dir of the controller. Examples:
# /code/weblog/components/admin/users_controller.rb with Admin::UsersController
# will use /code/weblog/components as template root
# and find templates in /code/weblog/components/admin/users/
#
# /code/weblog/components/admin/parties/users_controller.rb with Admin::Parties::UsersController
# will also use /code/weblog/components as template root
# and find templates in /code/weblog/components/admin/parties/users/
def uses_component_template_root
path_of_calling_controller = File.dirname(caller[0].split(/:\d+:/).first)
path_of_controller_root = path_of_calling_controller.sub(/#{controller_path.split("/")[0..-2]}$/, "")
self.template_root = path_of_controller_root
end
end end


public public
Expand Down
17 changes: 14 additions & 3 deletions actionpack/lib/action_controller/components.rb
Expand Up @@ -2,13 +2,21 @@ module ActionController #:nodoc:
module Components #:nodoc: module Components #:nodoc:
def self.append_features(base) def self.append_features(base)
super super
base.helper { def render_component(options) @controller.send(:component_response, options).body end } base.helper do
def render_component(options)
@controller.logger.info("Start rendering component (#{options.inspect}): ")
@controller.send(:component_response, options).body
@controller.logger.info("\n\nEnd of component rendering")
end
end
end end


protected protected
def render_component(options = {}) #:doc: def render_component(options = {}) #:doc:
response = component_response(options) response = component_response(options)
logger.info "Rendering component (#{options.inspect}): "
render_text(response.body, response.headers["Status"]) render_text(response.body, response.headers["Status"])
logger.info("\n\nEnd of component rendering")
end end


private private
Expand All @@ -22,8 +30,11 @@ def component_class(options)


def component_request(options) def component_request(options)
component_request = @request.dup component_request = @request.dup
component_request.send(:instance_variable_set, :@parameters, (options[:params] || {}).merge({ "controller" => options[:controller], "action" => options[:action] })) component_request.send(
component_request :instance_variable_set, :@parameters,
(options[:params] || {}).merge({ "controller" => options[:controller], "action" => options[:action] })
)
return component_request
end end
end end
end end
4 changes: 1 addition & 3 deletions actionpack/lib/action_controller/dependencies.rb
Expand Up @@ -88,6 +88,4 @@ def inherited(child)
end end
end end
end end
end end

Controllers = Dependencies::LoadingModule.new(File.expand_path(File.join(RAILS_ROOT, 'app', 'controllers'))) if defined?(RAILS_ROOT)
@@ -1,4 +1,4 @@
<% unless @exception.blamed_files.empty? %> <% if @exception.blamed_files && !@exception.blamed_files.empty? %>
<a href="#" onclick="document.getElementById('blame_trace').style.display='block'; return false;">Show blamed files</a> <a href="#" onclick="document.getElementById('blame_trace').style.display='block'; return false;">Show blamed files</a>
<pre id="blame_trace" style="display:none"><code><%=h @exception.describe_blame %></code></pre> <pre id="blame_trace" style="display:none"><code><%=h @exception.describe_blame %></code></pre>
<% end %> <% end %>
Expand Down

0 comments on commit 12a7573

Please sign in to comment.