Doug
Doug

Reputation: 186

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

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?

Upvotes: 7

Views: 6033

Answers (2)

Paul Sturgess
Paul Sturgess

Reputation: 3294

In your initializer do:

Rails.application.configure do
  config.active_record.schema_format = :sql
end

Upvotes: 3

Weibo Chen
Weibo Chen

Reputation: 379

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.

Upvotes: 7

Related Questions