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



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

foo/
foo/spec/dummy/

中有相同的迁移

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

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

问题 1)耙子文件无聊了吗?(db:migrate应该递归到虚拟应用程序吗?

问题 2)迁移是否应该只在一个目录中?如果是,是哪一个?

我们使用的是 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

问题2
IMO,迁移应该只存在于 foo/db/migrate 文件夹中,而不是 foo/spec/dummy/db/migrate 上。事实上,我不对虚拟人的数据库/迁移或数据库/模式进行版本控制。

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

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

要测试虚拟应用,您可以使用以下命令为测试 ENV 运行引擎迁移:

RAILS_ENV=test rake db:migrate

相关内容

  • 没有找到相关文章

最新更新