Sha256: eda451aac3a1781e9b180e56ba0f84b623a29fb6d460b61044368f1e7443d6a6

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

require 'action_controller'
require 'action_mailer'
require 'action_view'

module Incline::Extensions

  ##
  # Makes 'main_app' automatically get searched for methods.
  module MainApp

    def self.included(base) # :nodoc:
      base.class_eval do

        # :nodoc:
        alias :incline_mainapp_original_method_missing :method_missing

        def method_missing(method, *args, &block) # :nodoc:
          o_main_app = if respond_to?(:main_app)
                         send(:main_app)
                       else
                         Rails.application.class.routes.url_helpers
                       end
          
          if o_main_app && o_main_app.respond_to?(method)
            return o_main_app.send(method, *args, &block)
          end
          
          incline_mainapp_original_method_missing(method, *args, &block)
        end

      end
    end

  end

end

ActionController::Base.include Incline::Extensions::MainApp
ActionMailer::Base.include Incline::Extensions::MainApp
ActionView::Base.include Incline::Extensions::MainApp

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
incline-0.1.8 lib/incline/extensions/main_app.rb
incline-0.1.7 lib/incline/extensions/main_app.rb
incline-0.1.5 lib/incline/extensions/main_app.rb