Method: Sequel::Dataset#with_extend

Defined in:
lib/sequel/dataset/query.rb,
lib/sequel/dataset/query.rb
more...

#with_extend(*mods, &block) ⇒ Object

:nocov:

[View source]

1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
# File 'lib/sequel/dataset/query.rb', line 1240

def with_extend(*mods, &block)
  c = Sequel.set_temp_name(Class.new(self.class)){"Sequel::Dataset::_Subclass"}
  c.include(*mods) unless mods.empty?
  c.include(Sequel.set_temp_name(DatasetModule.new(&block)){"Sequel::Dataset::_DatasetModule(#{block.source_location.join(':')})"}) if block
  o = c.freeze.allocate
  o.instance_variable_set(:@db, @db)
  o.instance_variable_set(:@opts, @opts)
  o.instance_variable_set(:@cache, {})
  if cols = cache_get(:_columns)
    o.send(:columns=, cols)
  end
  o.freeze
end