Module: ActiveRecordShards::SchemaDumperExtension

Defined in:
lib/active_record_shards/schema_dumper_extension.rb

Instance Method Summary collapse

Instance Method Details

#dump(stream) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/active_record_shards/schema_dumper_extension.rb', line 5

def dump(stream)
  stream = super(stream)
  original_connection = @connection

  if ActiveRecord::Base.supports_sharding?
    ActiveRecord::Base.on_first_shard do
      @connection = ActiveRecord::Base.connection
      shard_header(stream)
      extensions(stream)
      tables(stream)
      shard_trailer(stream)
    end
  end

  stream
ensure
  @connection = original_connection
end

#shard_header(stream) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_record_shards/schema_dumper_extension.rb', line 25

def shard_header(stream)
define_params = @version ? "version: #{@version}" : ""

stream.puts <<HEADER


# This section generated by active_record_shards

ActiveRecord::Base.on_all_shards do
ActiveRecord::Schema.define(#{define_params}) do

HEADER
end

#shard_trailer(stream) ⇒ Object



39
40
41
# File 'lib/active_record_shards/schema_dumper_extension.rb', line 39

def shard_trailer(stream)
  stream.puts "end\nend"
end