In Rails 5, setting config.active_record.schema_format = :sql but still getting schema.rb created on db:migrate
Asked Answered
R

2

7

Working on a Rails 5 app, I want to use structure.sql instead of schema.rb (we're using PostGIS with lots of custom SQL calls...). In config/initializers/database_options.rb I have the following:

# use structure.sql, not schema.rb
Rails.application.config.active_record.schema_format = :sql

If I run the following:

$ rake db:migrate

it generates db/schema.rb, not db/structure.sql.

The rails guides say:

There are two ways to dump the schema. This is set in config/application.rb by the config.active_record.schema_format setting, which may be either :sql or :ruby.

What magic am I missing here?

Rhotacism answered 28/12, 2016 at 20:10 Comment(0)
L
7

I think you should put your rails component config before Initializers. The rails application initialize by the following order.

  • config/application.rb
  • Environment-specific configuration files
  • Initializers
  • After-initializers

You could put your config config.active_record.schema_format = :sql either in config/application.rb or config/environments/development.rb depends on environment you used.

That should work.

Looselimbed answered 29/12, 2016 at 8:57 Comment(0)
S
3

In your initializer do:

Rails.application.configure do
  config.active_record.schema_format = :sql
end
Suffocate answered 15/4, 2019 at 16:52 Comment(2)
Thanks for providing an answer, since that notified me and I realized that I hadn't ever accepted bananaappletw's answer. The problem I had was that I was setting this in an initializer (as you suggest as well), but it needs to be in either config/application.rb or one of the environment configs.Rhotacism
The solution I posted works for me in an initializer.Suffocate

© 2022 - 2024 — McMap. All rights reserved.