<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I don’t think the actual database has been specified anywhere, but if it’s MySQL or MariaDB, it’s actually quite easy to re-order columns; I just the free Sequel Ace client, which turns it into a drag & drop operation. That makes it easy to modify your local development database to match `schema.rb` (and hopefully production):<div class=""><br class=""></div><div class="">1. Check out `schema.rb` from version control</div><div class="">2. Run `rails db:schema:dump`</div><div class="">3. If there are no uncommitted changes in `schema.rb`, you’re done!</div><div class="">4. If there are uncommitted changes, use the diff of `schema.rb` to see them in detail and fix your local database (by re-ordering columns or changing types or whatever).</div><div class="">5. Goto 2.</div><div class=""><br class=""></div><div class=""><font color="#000000" class="">I also often see churn in the schema around column/database/server collation, which can be a little trickier to resolve due to how precedence of these values ends up being reflected into the schema dump, but it’s still possible to use the approach above to iteratively converge your local setup into line with what’s committed.</font></div><div class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></span></div><div class="">I believe with PostgreSQL it’s a little more complicated to reorder columns, in which case I’d strongly advocate just dropping your whole development database and taking a dump from a deployment environment (either structure-only, or including some/all data), then running `rails db:schema:dump` and committing that immediately as the new de facto schema that everyone needs to align with.</div><div class=""><br class=""></div><div class="">The `fix-db-schema-conflicts` gem will certainly keep the `schema.rb` file consistent and avoid version control churn, but at the expense of it not _actually_ reflecting the true column ordering on production or anyone else's database — whether or not that’s important will probably depend on how you are using your database. Personally I’d find it a bit weird not to have `id` as the first listed column in most of my tables, but that’s totally subjective.</div><div class=""><br class=""></div><div class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">Ultimately, there’s no substitute for diligence when committing. </span><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">It’s not that unusual for my local database to have extra tables or columns from other branches that I’m working on or reviewing, and so</span><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""> as a rule, when I am committing changes that include anything in schema.rb I check every change to make sure it’s expected, and only stage the changes that I _know_ are intentional at this point. As Stuart mentioned in his original message, it can get annoying, but I think it’s really the only way to be confident that your schema matches production and everyone else’s.</span></div><div class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">On 1 Mar 2021, at 21:46, Sam Livingston-Gray <<a href="mailto:geeksam@gmail.com" class="">geeksam@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">I like this.  The only thing I would change is that instead of "whoever yells loudest gets to keep their database," you run `db:schema:dump` against the production database, then copy the resulting file to somewhere it can be committed to Git.  :)<br class=""></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 1, 2021 at 1:36 AM Patrick Gleeson <<a href="mailto:patrick.c.gleeson@gmail.com" class="">patrick.c.gleeson@gmail.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="">Step one: Whoever yells loudest gets to keep their database<div class="">Step two: Everyone else does rails db:reset on their development databases, and possibly just db:schema:load on their test ones if you have seed data you don't want in your test db.</div><div class=""><br class=""></div><div class="">The key is that db:schema:load reads from the schema file as-is, rather than reading from the migrations and re-constructing the schema from the database.</div><div class=""><br class=""></div><div class=""> - Patrick</div><div class=""><br class=""></div><div class=""><a href="https://whyarentyoucoding.com/" target="_blank" class="">Why aren't you coding?</a></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 1 Mar 2021 at 08:10, Stuart Harrison <<a href="mailto:pezholio@gmail.com" target="_blank" class="">pezholio@gmail.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class=""><div class="">Morning LRUG</div><div class=""><br class=""></div><div class="">I wanted to share an annoyance I've had on multiple projects, and wondered if anyone had any fixes for it? <br class=""></div><div class=""><br class=""></div><div class="">If there are multiple devs on a project committing a bunch of migrations and running `db:migrate`, it seems that, over time, the order of columns in the schema.rb file jumps around every time the command is run. <br class=""></div><div class=""><br class=""></div><div class="">I can get around this by only committing the relevant line(s) when I run a migration, but this does get annoying. <br class=""></div><div class=""><br class=""></div><div class="">I'm sure there is a solution, but it's disappeared out of my head, and seems to be an ungoogleable problem, so was wondering if anyone had come across a solution?</div><div class=""><br class=""></div><div class="">Cheers</div><div class=""><br class=""></div><div class="">Stu<br class=""></div></div>
_______________________________________________<br class="">
Chat mailing list<br class="">
<a href="mailto:Chat@lists.lrug.org" target="_blank" class="">Chat@lists.lrug.org</a><br class="">
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/pipermail/chat-lrug.org</a><br class="">
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br class="">
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br class="">
</blockquote></div>
_______________________________________________<br class="">
Chat mailing list<br class="">
<a href="mailto:Chat@lists.lrug.org" target="_blank" class="">Chat@lists.lrug.org</a><br class="">
Archives: <a href="http://lists.lrug.org/pipermail/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/pipermail/chat-lrug.org</a><br class="">
Manage your subscription: <a href="http://lists.lrug.org/options.cgi/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/options.cgi/chat-lrug.org</a><br class="">
List info: <a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" rel="noreferrer" target="_blank" class="">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br class="">
</blockquote></div>
_______________________________________________<br class="">Chat mailing list<br class=""><a href="mailto:Chat@lists.lrug.org" class="">Chat@lists.lrug.org</a><br class="">Archives: http://lists.lrug.org/pipermail/chat-lrug.org<br class="">Manage your subscription: http://lists.lrug.org/options.cgi/chat-lrug.org<br class="">List info: http://lists.lrug.org/listinfo.cgi/chat-lrug.org<br class=""></div></blockquote></div><br class=""></div></body></html>