DEV: Wait for initdb to complete in docker.rake (#15614)
On slower hardware it can take a while to init the database. If we don't wait, the `rake db:create` step will fail.
This commit is contained in:
parent
31b27b3712
commit
ed2f700440
|
@ -102,8 +102,11 @@ task 'docker:test' do
|
||||||
puts "Starting background redis"
|
puts "Starting background redis"
|
||||||
@redis_pid = Process.spawn('redis-server --dir tmp/test_data/redis')
|
@redis_pid = Process.spawn('redis-server --dir tmp/test_data/redis')
|
||||||
|
|
||||||
|
puts "Initializing postgres"
|
||||||
|
system("script/start_test_db.rb --skip-run", exception: true)
|
||||||
|
|
||||||
puts "Starting postgres"
|
puts "Starting postgres"
|
||||||
@pg_pid = Process.spawn("script/start_test_db.rb --exec")
|
@pg_pid = Process.spawn("script/start_test_db.rb --skip-setup --exec")
|
||||||
|
|
||||||
ENV["RAILS_ENV"] = "test"
|
ENV["RAILS_ENV"] = "test"
|
||||||
# this shaves all the creation of the multisite db off
|
# this shaves all the creation of the multisite db off
|
||||||
|
|
|
@ -8,23 +8,31 @@ def run(*args)
|
||||||
system(*args, exception: true)
|
system(*args, exception: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should_setup = true
|
||||||
|
should_run = true
|
||||||
should_exec = false
|
should_exec = false
|
||||||
while a = ARGV.pop
|
while a = ARGV.pop
|
||||||
if a == "--exec"
|
if a == "--skip-setup"
|
||||||
|
should_setup = false
|
||||||
|
elsif a == "--skip-run"
|
||||||
|
should_run = false
|
||||||
|
elsif a == "--exec"
|
||||||
should_exec = true
|
should_exec = true
|
||||||
else
|
else
|
||||||
raise "Unknown argument #{a}"
|
raise "Unknown argument #{a}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
run "#{BIN}/initdb -D #{DATA}"
|
if should_setup
|
||||||
|
run "#{BIN}/initdb -D #{DATA}"
|
||||||
|
|
||||||
run "echo fsync = off >> #{DATA}/postgresql.conf"
|
run "echo fsync = off >> #{DATA}/postgresql.conf"
|
||||||
run "echo full_page_writes = off >> #{DATA}/postgresql.conf"
|
run "echo full_page_writes = off >> #{DATA}/postgresql.conf"
|
||||||
run "echo shared_buffers = 500MB >> #{DATA}/postgresql.conf"
|
run "echo shared_buffers = 500MB >> #{DATA}/postgresql.conf"
|
||||||
|
end
|
||||||
|
|
||||||
if should_exec
|
if should_exec
|
||||||
exec "#{BIN}/postmaster -D #{DATA}"
|
exec "#{BIN}/postmaster -D #{DATA}"
|
||||||
else
|
elsif should_run
|
||||||
run "#{BIN}/pg_ctl -D #{DATA} start"
|
run "#{BIN}/pg_ctl -D #{DATA} start"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue