From 051dec8360eac93eb4dc1b4a2d6b50c7a7332cbe Mon Sep 17 00:00:00 2001 From: Kevin Wang and Stephen Caudill Date: Fri, 24 Feb 2012 16:08:12 -0500 Subject: [PATCH] Convert Draper to using a Railtie for loading --- lib/draper.rb | 2 +- lib/draper/railtie.rb | 19 +++++++++++++++++++ lib/draper/system.rb | 11 +++++++---- .../support/samples/application_controller.rb | 7 ++----- 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 lib/draper/railtie.rb diff --git a/lib/draper.rb b/lib/draper.rb index 1430ff7..ad2a954 100644 --- a/lib/draper.rb +++ b/lib/draper.rb @@ -7,5 +7,5 @@ require 'draper/helper_support' require 'draper/view_context' require 'draper/decorated_enumerable_proxy' require 'draper/rspec_integration' if defined?(RSpec) and RSpec.respond_to?(:configure) +require 'draper/railtie' -Draper::System.setup diff --git a/lib/draper/railtie.rb b/lib/draper/railtie.rb new file mode 100644 index 0000000..5334994 --- /dev/null +++ b/lib/draper/railtie.rb @@ -0,0 +1,19 @@ +require 'rails/railtie' + +module Draper + class Railtie < Rails::Railtie + + initializer "draper.extend_action_controller_base" do |app| + ActiveSupport.on_load(:action_controller) do + Draper::System.setup(:action_controller) + end + end + + initializer "draper.extend_action_mailer_base" do |app| + ActiveSupport.on_load(:action_mailer) do + Draper::System.setup(:action_mailer) + end + end + + end +end diff --git a/lib/draper/system.rb b/lib/draper/system.rb index cc0d14b..cea1643 100644 --- a/lib/draper/system.rb +++ b/lib/draper/system.rb @@ -1,9 +1,12 @@ module Draper class System - def self.setup - ActionController::Base.send(:include, Draper::ViewContextFilter) if defined?(ActionController::Base) - ActionMailer::Base.send(:include, Draper::ViewContextFilter) if defined?(ActionMailer::Base) - ActionController::Base.send(:helper, Draper::HelperSupport) if defined?(ActionController::Base) + def self.setup(component) + if component == :action_controller + ActionController::Base.send(:include, Draper::ViewContextFilter) + ActionController::Base.extend(Draper::HelperSupport) + elsif component == :action_mailer + ActionMailer::Base.send(:include, Draper::ViewContextFilter) + end end end end diff --git a/spec/support/samples/application_controller.rb b/spec/support/samples/application_controller.rb index bfd70ea..bf5491d 100644 --- a/spec/support/samples/application_controller.rb +++ b/spec/support/samples/application_controller.rb @@ -9,12 +9,11 @@ module ActionController def self.before_filter(name) @@before_filters << name end - def self.helper(mod) - extend mod - end end end +Draper::System.setup(:action_controller) + class ApplicationController < ActionController::Base extend ActionView::Helpers extend ActionView::Helpers::TagHelper @@ -42,5 +41,3 @@ class ApplicationController < ActionController::Base @@capture ||= false end end - -Draper::System.setup