如何管理 Rails 引擎 + 虚拟应用程序的迁移

2024-02-14

我刚刚加入了一个开发 Rails 引擎的项目,该项目还有一个用于测试的虚拟应用程序。

foo/
foo/spec/dummy/

存在相同的迁移

foo/db/migrate/
foo/spec/dummy/db/migrate/

If I rake db:migrate从虚拟应用程序来看,一切都很好。如果我从引擎(当前目录= foo)执行相同的操作,我会收到有关具有相同名称的多个迁移的错误。

Q1) Rakefile 是否无聊? (应该db:migrate递归到虚拟应用程序?)

Q2) 迁移应该只在一个目录中吗?如果有,是哪一个?

我们使用的是 Rails 3.2.9,ruby 1.9.3p194。


问题1
Rakefile 应该有一个条目来说明规范/虚拟应用程序。例如,

Bundler::GemHelper.install_tasks
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'

这是更详细的 rakefile 示例,https://github.com/twinge/questionnaire_engine/blob/engine2/Rakefile https://github.com/twinge/questionnaire_engine/blob/engine2/Rakefile

问题2
IMO,迁移应该只存在于 foo/db/migrate 文件夹中,并且notfoo/spec/dummy/db/migrate.txt事实上,我不对虚拟的 db/migrate 或 db/schema 进行版本控制。

为什么?我使用虚拟应用程序来确保我的引擎完全安装后 100% 正常工作。因此,如果我对 foo/spec/dummy db 状态进行版本控制,我将像以前安装一样进行测试。

示例引擎
https://github.com/twinge/questionnaire_engine/tree/engine2 https://github.com/twinge/questionnaire_engine/tree/engine2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何管理 Rails 引擎 + 虚拟应用程序的迁移 的相关文章

随机推荐