lib/rom/relation_builder.rb in rom-0.4.2 vs lib/rom/relation_builder.rb in rom-0.5.0

- old
+ new

@@ -1,16 +1,18 @@ module ROM - # @api private class RelationBuilder attr_reader :schema, :mod # @api private - def initialize(schema) + def initialize(schema, relations) @schema = schema - @mod = schema.each_with_object(Module.new) do |(name, relation), m| - m.send(:define_method, name) { relation.dataset } + + @mod = Module.new + + @mod.module_exec do + define_method(:__relations__) { relations } end end # @api private def call(name) @@ -32,17 +34,29 @@ end def name #{name.inspect} end + + def respond_to_missing?(name, _include_private = false) + __relations__.key?(name) || super + end + + private + + def method_missing(name, *args, &block) + if __relations__.key?(name) + __relations__[name] + else + super + end + end RUBY klass.send(:include, mod) yield(klass) klass.new(schema_relation.dataset, schema_relation.header) end - end - end