From 79bd92b7833d52b74f50259cf8a21f9b05f3e9e3 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 3 Aug 2010 19:36:53 +0200 Subject: Refactor ActionMailer to not use hide_actions --- actionmailer/lib/action_mailer.rb | 1 + actionmailer/lib/action_mailer/base.rb | 11 ++---- actionmailer/lib/action_mailer/hide_actions.rb | 46 -------------------------- 3 files changed, 4 insertions(+), 54 deletions(-) delete mode 100644 actionmailer/lib/action_mailer/hide_actions.rb (limited to 'actionmailer/lib') diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 05ba12197a..706ba74c2d 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -26,6 +26,7 @@ $:.unshift(actionpack_path) if File.directory?(actionpack_path) && !$:.include?( require 'abstract_controller' require 'action_view' +require 'action_dispatch' # Common Active Support usage in Action Mailer require 'active_support/core_ext/class' diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index d1fb446366..f7acb36341 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -5,7 +5,6 @@ require 'active_support/core_ext/array/wrap' require 'active_support/core_ext/object/blank' require 'active_support/core_ext/proc' require 'action_mailer/log_subscriber' -require 'action_mailer/hide_actions' module ActionMailer #:nodoc: # Action Mailer allows you to send email from your application using a mailer model and views. @@ -341,13 +340,13 @@ module ActionMailer #:nodoc: include AbstractController::Helpers include AbstractController::Translation include AbstractController::AssetPaths + include AbstractController::UrlFor cattr_reader :protected_instance_variables @@protected_instance_variables = [] helper ActionMailer::MailHelper include ActionMailer::OldApi - include ActionMailer::HideActions delegate :register_observer, :to => Mail delegate :register_interceptor, :to => Mail @@ -364,9 +363,8 @@ module ActionMailer #:nodoc: class << self def inherited(klass) - klass.with_hiding_actions do - super(klass) - end + super(klass) + klass.class_eval { @action_methods = nil } end def mailer_name @@ -732,9 +730,6 @@ module ActionMailer #:nodoc: container.add_part(part) end - class_attribute :default_url_options - self.default_url_options = {} - ActiveSupport.run_load_hooks(:action_mailer, self) end end diff --git a/actionmailer/lib/action_mailer/hide_actions.rb b/actionmailer/lib/action_mailer/hide_actions.rb deleted file mode 100644 index 876da95c3a..0000000000 --- a/actionmailer/lib/action_mailer/hide_actions.rb +++ /dev/null @@ -1,46 +0,0 @@ -require 'active_support/core_ext/class/attribute' - -module ActionMailer - # ActionController::HideActions adds the ability to prevent public methods on a controller - # to be called as actions. - module HideActions - extend ActiveSupport::Concern - - included do - class_attribute :hidden_actions - self.hidden_actions = Set.new.freeze - end - - private - - module ClassMethods - # Sets all of the actions passed in as hidden actions. - # - # ==== Parameters - # *args<#to_s>:: A list of actions - def hide_action(*args) - self.hidden_actions = hidden_actions.dup.merge(args.map(&:to_s)).freeze - end - - # Run block and add all the new action_methods to hidden_actions. - # This is used in inherited method. - def with_hiding_actions - yield - clear_action_methods! - hide_action(*action_methods) - clear_action_methods! - end - - def clear_action_methods! - @action_methods = nil - end - - # Overrides AbstractController::Base#action_methods to remove any methods - # that are listed as hidden methods. - def action_methods - @action_methods ||= super.reject { |name| hidden_actions.include?(name) } - end - end - end -end - -- cgit v1.2.3