在 Rails 5 中,设置 config.active_record.schema_format = :sql 但仍然在 db:migrate 上创建 schema.rb

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

在开发 Rails 5 应用程序时,我想使用 structure.sql 而不是 schema.rb(我们正在使用具有大量自定义 SQL 调用的 PostGIS。 .).在 config/initializers/database_options.rb 我有以下内容:

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

如果我运行以下:

$ rake db:migrate

它生成db/schema.rb而不是db/structure.sql.

rails 向导说:

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.

我在这里缺少什么魔法?

我认为您应该将 rails 组件配置放在 Initializers 之前。 rails 应用程序按以下顺序初始化。

  • config/application.rb
  • 特定于环境的配置文件
  • 初始化器
  • 后初始化器

您可以将配置 config.active_record.schema_format = :sql 放在 config/application.rbconfig/environments/development.rb 中,具体取决于您使用的环境。

应该可以。

在你的初始化程序中做:

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