module  OrbitBasis
  module RenderAnywhere
    def render_anywhere(partial,opts)
      view =  ActionView::Base.new(Orbit::Application.config.paths["app/views"].first)
      view.extend ApplicationHelper
      view.render(:partial => partial,:locals=>opts)
    end
  end
  module BaseModel
    extend ActiveSupport::Concern

    # included do
    #   scope :recent, desc(:_id)
    #   scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
    #   scope :by_week, where(:created_at.gte => 7.days.ago.utc)
    # end

    module ClassMethods

      def find_in_batches(opts = {})
        batch_size = opts[:batch_size] || 1000
        start = opts.delete(:start).to_i || 0
        objects = self.limit(batch_size).skip(start)
        t = Time.new
        while objects.any?
          yield objects
          start += batch_size
          # Rails.logger.debug("processed #{start} records in #{Time.new - t} seconds") if Rails.logger.debug?
          break if objects.size < batch_size
          objects = self.limit(batch_size).skip(start)
        end
      end
    end
  end
end
