Why does rake db:migrate sometimes add trailing whitespace to structure.sql?
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.
In .gitconfig
(or .git/config
)
[filter "remove-trailing-whitespace"]
clean = sed -E 's/[[:space:]]*$//'
smudge = cat
In .gitattributes
or .git/info/attributes
db/structure.sql filter=remove-trailing-whitespace
See the documentation on gitattributes for more information on git filters
.