module ROM::EnumerableDataset

A helper module that adds data-proxy behavior to an enumerable object

This module is intended to be used by gateways

Class that includes this module can define `row_proc` class method which must return a proc-like object which will be used to process each element in the enumerable

@example

class MyDataset
  include ROM::EnumerableDataset

  def self.row_proc
    -> tuple { tuple.each_with_object({}) { |(k,v), h| h[k.to_sym] = v } }
  end
end

ds = MyDataset.new([{ 'name' => 'Jane' }, [:name])
ds.to_a # => { :name => 'Jane' }

@api public

Public Class Methods

included(klass) click to toggle source

Included hook which extends a class with DataProxy behavior

This module can also be included into other modules so we apply the extension only for classes

@api private

# File lib/rom/support/enumerable_dataset.rb, line 42
def self.included(klass)
  return unless klass.is_a?(Class)

  klass.class_eval do
    include Options
    include DataProxy
  end
end