【问题标题】:Rails prevent db:migrate from running subfoldersRails 阻止 db:migrate 运行子文件夹
【发布时间】:2018-09-29 22:42:27
【问题描述】:

我的迁移有这样的结构

  • db/迁移
    • xx_create_sites.rb
    • 网站
      • xx_create_users.rb

site 目录包含只需要在单独的数据库上运行的迁移。我有一个工作的耙子任务

desc "Migrate the database through scripts in db/migrate/site."
namespace :db do

  task :sites => :environment do
    @sites = Site.all()
    for site in @sites do
        conn_config = ActiveRecord::Base.connection_config
        conn_config[:database] = site.id
        ActiveRecord::Base.establish_connection conn_config
        ActiveRecord::MigrationContext.new("db/migrate/site/").migrate
    end
  end
end

但是,如果我为默认数据库运行bin/rails db:migrate,它还会将站点目录迁移到整个数据库中...如何防止此文件夹被迁移?

【问题讨论】:

  • 这会在子文件夹中运行迁移。我需要忽略一个子文件夹。
  • 我很确定它会覆盖db/migrate 中的每个文件,因此请在该目录之外选择一个不同的文件夹
  • @Anthony 成功了,谢谢。想形成一个答案?

标签: ruby-on-rails ruby database migration


【解决方案1】:

Rails 预计迁移位于 db/migrate 中,并且在运行它们时它会全局化该目录中的所有内容(请参阅:the docs)。

如果您出于某种原因想要使某些迁移保持本地化,则需要将它们移出 db/migrate 并将您的自定义 rake 任务指向该目录。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 2015-10-31
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多