Hello, fellow developers! I've recently had a thought-provoking discussion on LinkedIn Ruby on Rails group about the role of the schema.rb
file in Rails development, particularly concerning its authority over the database schema. The conversation evoked mixed reviews, and I thought it might be interesting to bring the topic to dev.to and get more insights.
The Rails documentation has changed its stance over time. Initially, it suggested that db/schema.rb
is the authoritative source for your database schema. However, later versions state that your database remains the authoritative source. Here's an in-depth details on this topic, where I've tracked the changes in Rails docs, and explored the implications.
What's your take on this? Do you consider the schema.rb
file as the definitive schema for your Rails apps, or do you rely on the database itself?
In addition, I've been using a custom Rake task in my Rails projects, especially during the early phases of development:
namespace :db do
desc 'reset the database by dropping the schema'
task complete_reset: :environment do
raise unless Rails.env.local?
FileUtils.rm_f('db/schema.rb')
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
Rake::Task['db:seed'].invoke
Rake::Task['dev:prime'].invoke
end
end
This task helps to avoid conflicts and manage the fast-changing specifications by resetting the database, recreating it, and seeding it with test data. I'd love to know - how do you handle such changes in your projects? What are your thoughts on this complete_reset
task?
Looking forward to some insightful discussion!
Top comments (0)