I’d rather see a public API that we could hook into safely. While the sorting 
sounds helpful, I’ve needed other behavior changes in the ruby schema dumper 
too.

On Thursday, October 10, 2019 at 5:04:59 PM UTC-7, Jake Moffatt wrote:
> For context: I am the original author of the fix-db-schema-conflicts gem.
> 
> It prevents the kind of annoying churn described in this earlier thread:
> 
> 
> https://groups.google.com/forum/?fromgroups#!searchin/rubyonrails-core/sort$20columns$20schema|sort:date/rubyonrails-core/h6q8nGFzGKs/pztvg5sJrbgJ
> 
> 
> 
> Namely, when two people make changes to the same Rails codebase it can create 
> a situation where they are forever locked into a contest of flip-flopping the 
> order of columns/foreign-keys, etc in the `db/schema.rb` file each time they 
> make changes.
> 
> 
> The fix-db-schema-conflicts gem "fixes" this by prepending some code to the 
> Rails schema generation that sorts everything before spitting it out to 
> schema.rb.
> 
> 
> Additionally it uses Rubocop to autoformat the generated file to use uniform 
> spacing and column alignment.
> 
> Over the years I've maintained this gem the vast majority of issues 
> surrounding it have come from Rubocop compatibility with Rails. The Rubocop 
> autocorrect is really something that could be applied separately by any team 
> and was only added to my gem as a convenience, which has turned into a huge 
> mess in terms of gem maintenance. The real value of my gem comes from the 
> ordering of the database schema.
> 
> 
> I propose making a small change to Rails that integrates my gem's schema 
> sorting logic into Rails by default, with a configuration option to preserve 
> the ordering if a specific application relies on column sort order for some 
> reason.
> 
> This change would not affect structure.sql in any way.
> 
> In my mind this is a common source of frustration for every single Rails 
> project that has more than contributor, and it is a simple, low-risk change 
> (can be reverted with a configuration).
> 
> I would be very glad to do the work if it was desired.
> 
> 
> What does the community think, before I spend time on a PR for this?

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-core/d82c9d8e-2c14-4266-83e4-407289b6a25f%40googlegroups.com.

Reply via email to