Sha256: ab93da53760510249bc806a7edf7c2396cbc19e24f8aa1fe4f04b73d703edd6b

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

# Author: Stephen Sykes

module SlimScrooge
  module SelectAll
    def self.included(base)
      base.alias_method_chain :select_all, :slim_scrooge
    end

    def select_all_with_slim_scrooge(sql, name = nil)
      callsite_key = SlimScrooge::Callsites.callsite_key(callsite_hash, sql)
      if SlimScrooge::Callsites.has_key?(callsite_key)
        if callsite = SlimScrooge::Callsites[callsite_key]
          seen_columns = callsite.seen_columns.dup
          rows = select_all_without_slim_scrooge(callsite.scrooged_sql(seen_columns, sql), name + " SlimScrooged")
          result_set = SlimScrooge::ResultSet.new(rows.dup, callsite_key, seen_columns)
          rows.each {|row| row.real_hash = MonitoredHash[{}, callsite, result_set]}
        else
          select_all_without_slim_scrooge(sql, name)
        end
      elsif callsite = SlimScrooge::Callsites.create(sql, callsite_key, name)
        rows = select_all_without_slim_scrooge(sql, name + " SlimScrooged 1st time")
        rows.each {|row| row.real_hash = MonitoredHash[row.to_hash, callsite, nil]}
        rows
      else
        select_all_without_slim_scrooge(sql, name)
      end
    end
  end
end

ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:include, SlimScrooge::SelectAll)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slim_scrooge-0.1.1 lib/slim_scrooge/slim_scrooge.rb