如何配置一个额外/不同的迁移文件夹 [英] How to configure an extra/different migrations folder

查看:164
本文介绍了如何配置一个额外/不同的迁移文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个同事和我正在分享一些模型的不同项目。所以,我们通过git子模块共享模型。



此外,我们还希望能够共享迁移:



这样,我的同事的迁移将在我的项目的文件夹 db / migrate / other_db



如何将rails迁移配置为在另外的文件夹中运行迁移?

解决方案

在您的配置文件(config / application.rb为所有环境或config / environments / $(环境).rb仅针对特定环境)添加此行:

  config.paths ['db / migrate'] + ='db / migrate / other_db'

如果要更改默认的db / migrate路径(config.paths ['db / migrate']是一个数组,默认情况下是一个字符串'db / migrate'),请执行以下操作:

  config.paths ['db / migrate'] = ['db / my_migrate'] 

这是默认的config.paths,wh我们也可以改变:

 app=> [app],
app / assets=> [app / assets],
app / controllers=> [app / controllers],
app / helpers=> [app / helpers],
app / models=> [app / models],
app / mailers=> [app / mailers],
app / views=> [app / views],
lib=> [lib],
lib / assets=> [lib / assets],
lib / tasks=> [lib / tasks],
config=> [config],
config / environments=> [config / environments],
config / initializers=> [config / initializers],
config / locales=> [config / locales],
config / routes=> [config / routes.rb],
db=> [db],
db / migrate=> [db / migrate],
db / seeds=> [db / seeds.rb],
vendor=> [vendor],
vendor / assets=> [vendor / assets],
vendor / plugins=> [vendor / plugins],
config / database=> [config / database.yml],
config / environment=> [config / environment.rb],
lib / templates=> [lib / templates],
log=> [log / development.log],
public=> [public],
public / javascripts=> [public / javascripts],
public / stylesheets=> [public / stylesheets],
tmp=> [tmp],


A colleague and I are working in different projects that share some models. So, we are sharing the models through a git submodule.

Additionally, we'd like to be able to also share migrations:

In this way, my colleague's migrations would be in the folder db/migrate/other_db of my project.

How can I configure rails migrations to also run the migrations in this extra folder?

解决方案

In your config file (config/application.rb for all environments or config/environments/$(environment).rb only for particular environment) add this line:

config.paths['db/migrate'] += 'db/migrate/other_db'

And if you want to change default 'db/migrate' path (config.paths['db/migrate'] is an array with one string 'db/migrate' by default), do this:

config.paths['db/migrate'] = ['db/my_migrate']

Here are default config.paths, which we also can change:

"app" => ["app"],
"app/assets" => ["app/assets"],
"app/controllers" => ["app/controllers"],
"app/helpers" => ["app/helpers"],
"app/models" => ["app/models"],
"app/mailers" => ["app/mailers"],
"app/views" => ["app/views"],
"lib" => ["lib"],
"lib/assets" => ["lib/assets"],
"lib/tasks" => ["lib/tasks"],
"config" => ["config"],
"config/environments" => ["config/environments"],
"config/initializers" => ["config/initializers"],
"config/locales" => ["config/locales"],
"config/routes" => ["config/routes.rb"],
"db" => ["db"],
"db/migrate" => ["db/migrate"],
"db/seeds" => ["db/seeds.rb"],
"vendor" => ["vendor"],
"vendor/assets" => ["vendor/assets"],
"vendor/plugins" => ["vendor/plugins"],
"config/database" => ["config/database.yml"],
"config/environment" => ["config/environment.rb"],
"lib/templates" => ["lib/templates"],
"log" => ["log/development.log"],
"public" => ["public"],
"public/javascripts" => ["public/javascripts"],
"public/stylesheets" => ["public/stylesheets"],
"tmp" => ["tmp"],

这篇关于如何配置一个额外/不同的迁移文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆