Chris@0: module PrependEngineViews Chris@0: def self.included(base) Chris@0: base.send(:include, InstanceMethods) Chris@0: base.class_eval do Chris@0: alias_method_chain :add_engine_view_paths, :prepend Chris@0: end Chris@0: end Chris@0: Chris@0: module InstanceMethods Chris@0: # Patch Rails so engine's views are prepended to the view_path, Chris@0: # thereby letting plugins override application views Chris@0: def add_engine_view_paths_with_prepend Chris@0: paths = ActionView::PathSet.new(engines.collect(&:view_path)) Chris@0: ActionController::Base.view_paths.unshift(*paths) Chris@0: ActionMailer::Base.view_paths.unshift(*paths) if configuration.frameworks.include?(:action_mailer) Chris@0: end Chris@0: end Chris@0: end Chris@0: Chris@0: Rails::Plugin::Loader.send :include, PrependEngineViews Chris@0: