Module: ROM::DataProxy::ClassMethods

Included in:
ArrayDataset, EnumerableDataset
Defined in:
lib/rom/data_proxy.rb

Instance Method Summary collapse

Instance Method Details

#forward(*methods) ⇒ undefined

Forward provided methods to the underlaying data object

Examples:


class MyDataset
  include DataProxy

  forward(:find_all, :map)
end

Returns:

  • (undefined)


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/rom/data_proxy.rb', line 74

def forward(*methods)
  # FIXME: we should probably raise if one of the non-forwardable methods
  #       was provided
  (methods - NON_FORWARDABLE).each do |method_name|
    class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
      def #{method_name}(...)                              # def find_all(...)
        response = data.public_send(:#{method_name}, ...)  #   response = data.public_send(:find_all, ...)
                                                           #
        if response.equal?(data)                           #   if response.equal?(data)
          self                                             #     self
        elsif response.is_a?(data.class)                   #   elsif response.is_a?(data.class)
          self.class.new(response)                         #     self.class.new(response)
        else                                               #   else
          response                                         #     response
        end                                                #   end
      end                                                  # end
    RUBY
  end
end

#row_proc ⇒ Proc

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Default no-op tuple proc

Returns:

  • (Proc)


59
# File 'lib/rom/data_proxy.rb', line 59

def row_proc = -> tuple { tuple }