Sha256: fdbb64925ad696fbea16f66aa75991b7f26a619c8bd7ffd734932507406e2f5f

Contents?: true

Size: 1.34 KB

Versions: 49

Compression:

Stored size: 1.34 KB

Contents

module Sunspot #:nodoc:
  module Rails #:nodoc:
    # 
    # This module adds an after_filter to ActionController::Base that commits
    # the Sunspot session if any documents have been added, changed, or removed
    # in the course of the request.
    #
    module RequestLifecycle
      class <<self
        def included(base) #:nodoc:
          subclasses = base.subclasses.map do |subclass|
            begin
              subclass.constantize
            rescue NameError
            end
          end.compact
          loaded_controllers = [base].concat(subclasses)
          # Depending on how Sunspot::Rails is loaded, there may already be
          # controllers loaded into memory that subclass this controller. In
          # this case, since after_filter uses the inheritable_attribute
          # structure, the already-loaded subclasses don't get the filters. So,
          # the below ensures that all loaded controllers have the filter.
          loaded_controllers.each do |controller|
            controller.after_filter do
              if Sunspot::Rails.configuration.auto_commit_after_request?
                Sunspot.commit_if_dirty
              elsif Sunspot::Rails.configuration.auto_commit_after_delete_request?
                Sunspot.commit_if_delete_dirty
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 10 rubygems

Version Path
erichummel-sunspot_rails-1.2.1d lib/sunspot/rails/request_lifecycle.rb
erichummel-sunspot_rails-1.2.1c lib/sunspot/rails/request_lifecycle.rb
erichummel-sunspot_rails-1.2.1b lib/sunspot/rails/request_lifecycle.rb
erichummel-sunspot_rails-1.2.1a lib/sunspot/rails/request_lifecycle.rb
sunspot_rails_rbg-1.3.1 lib/sunspot/rails/request_lifecycle.rb
sunspot_rails_rbg-1.3.0 lib/sunspot/rails/request_lifecycle.rb
sunspot_rails_mongoid-1.2.1 lib/sunspot/rails/request_lifecycle.rb
sunspot_rails-1.2.1 lib/sunspot/rails/request_lifecycle.rb
sunspot_rails-1.2.0 lib/sunspot/rails/request_lifecycle.rb