ruby-on-rails - Rails rake 数据库 :schema:dump against SQL Server database with multiple schemas

标签 ruby-on-rails ruby sql-server rake

我遇到的情况是,我们在 SQL Server 上有多个模式,我们需要能够对其进行模式:转储和迁移。一个模式用于我们的新 Rails 应用程序,另一个模式用于我们依赖的遗留系统。

当运行 rake db:schema:dump 时,我们的新模式表在 schema.rb 文件中正确创建。遗留模式表不会以 schema.rb 结束。我想知道其他人是如何处理这个问题的。

我对此给出的另一个考虑是,因为我们的遗留模式表是相当静态的,所以将它们添加到一个单独的文件一次,然后为 rake db:schema:load 创建一个 before 钩子(Hook),它将在架构.rb。 rake db:schema:load; 是否有一个 before hook?如果是,那是什么?

最佳答案

这是我最终解决这个问题的方法。

我在 hooks.rake 中添加了一个 before Hook 到模式加载和模式转储中,如下所述。

namespace :project do
  namespace :db do
    task :before_schema_load => :environment do
      add_tables
    end

    task :before_schema_dump => :environment do
      add_ignored_tables
    end
  end
end

Rake::Task['db:schema:dump'].enhance(['project:db:before_schema_dump'])
Rake::Task['db:schema:load'].enhance(['project:db:before_schema_load'])

在 add_tables 功能中,我已经为我的遗留表手动创建了本质上等效于静态 schema.rb 的内容,因为它们很少更改(可能永远不会)。

在 add_ignored_tables 中,我已将表添加到 ActiveRecord::SchemaDumper.ignore_tables 数组以指示我不想转储到 schema.rb 的模式之外的表。在我的例子中,这是不在我当前应用程序架构下的所有内容。在我的情况下,我想要在我的应用程序架构之外的所有内容都在 add_tables 中指定,因此这些表也不应该在 schema.rb 中结束。

关于ruby-on-rails - Rails rake 数据库 :schema:dump against SQL Server database with multiple schemas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386664/

相关文章:

ruby-on-rails - 试图让回形针刷新或重新处理不起作用

ruby - bundle 与 bundle install 相同吗?

sql - Microsoft SQL Server 中的自然(人类字母数字)排序

sql-server - SQL Server 2016 - 计算剩余库存数量

sql-server - TSQL XML - 在交叉应用时过滤节点 LIKE 'x'

ruby-on-rails - 从 View 中排除 rails css 文件

ruby-on-rails - rails : control file store cache size

ruby-on-rails - rails : How do I make my rails project a Hexagonal rails project?

ruby-on-rails - React-rails安装报错Webpacker configuration file not found

ruby - 如何使用 Dir.glob 获取仅包含文件的列表?