【问题标题】:In Rails 5, setting config.active_record.schema_format = :sql but still getting schema.rb created on db:migrate在 Rails 5 中,设置 config.active_record.schema_format = :sql 但仍然在 db:migrate 上创建 schema.rb
【发布时间】:2016-12-28 20:10:32
【问题描述】:

在 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/application.rb 由 config.active_record.schema_format 设置,可以是 :sql 或 :ruby。

我在这里缺少什么魔法?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    应该可以的。

    【讨论】:

      【解决方案2】:

      在你的初始化器中做:

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

      【讨论】:

      • 感谢您提供答案,因为这通知了我,我意识到我从未接受过bananaappletw 的答案。我遇到的问题是我在初始化程序中设置了它(正如你所建议的那样),但它需要在 config/application.rb 或环境配置之一中。
      • 我发布的解决方案在初始化程序中对我有用。
      猜你喜欢
      • 2020-01-26
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 2017-01-26
      相关资源
      最近更新 更多