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

时间:2016-12-28 20:10:33

标签: ruby-on-rails-5 schema.rb

使用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

导轨指南说:

  

有两种方法可以转储架构。这是设置的   config.active_record.schema_format配置/ application.rb   设置,可以是:sql或:ruby。

我在这里错过了什么魔力?

2 个答案:

答案 0 :(得分:4)

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

  • 配置/ application.rb中
  • 特定于环境的配置文件
  • 初始值设定
  • 之后的初始化

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

这应该有效。

答案 1 :(得分:0)

在初始值设定项中执行

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