On some of our developer machines rake db:migrate
adds trailing whitespace to structure.sql
which is really annoying because every time a change is made to the database we have to first remove all trailing whitespace from the file.
Anyone know what could be up with that? Where would the whitespace come from? Has it to do with PostgreSQL or is it something else?
Here's a solution that you can commit to version control: trim the trailing whitespace as a db:migrate
hook.
In lib/tasks/db.rake
:
namespace :db do
def remove_whitespace_in_structure
if Rails.env.development?
`sed -i '' -e's/[[:space:]]*$//' db/structure.sql`
end
end
task :migrate do
remove_whitespace_in_structure
end
end
The above code may look like it's overwriting db:migrate
, but it's a hook that will run right after the normal db:migrate
task.
I just set up a git filter for this. Unfortunately, this is not something you can add to the repo; each team member will have to set it up.
.gitconfig
(or .git/config
)[filter "remove-trailing-whitespace"]
clean = sed -E 's/[[:space:]]*$//'
smudge = cat
.gitattributes
or .git/info/attributes
db/structure.sql filter=remove-trailing-whitespace
See the documentation on gitattributes for more information on git filters
.
It is the best day of my life, and maybe yours:
In PG 11, this error is not here anymore since Tablespace
is not written to the dump. So you can upgrade your PG version and get rid of the hook you had for space deletion.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With