Jes*_*ham 3 ruby rake ruby-on-rails rails-migrations rails-engines
所以我一直在阅读Ruby on Rails Engine指南迁移+种子 ,似乎为了在引擎上运行种子,它们需要在使用它的应用程序中添加
(使用虚拟应用程序的示例)
添加MyEngine::Engine.load_seed到Engine/test/dummy/db/seeds.rb
我的问题是为什么我们需要这样做,他们应该与主应用程序隔离?(它们没有关联,只是播种引擎数据库)
注意:如果您正在使用更多上下文,我已将设计gem(/ engine)添加到我的Engine中,种子数据只是在我的Engine上下文中创建用户以登录其界面
共享引擎的种子数据和模式有两个部分:模式迁移和种子数据本身.
作为引擎,有两种方法可以在引擎中封装db迁移,但让它们在Rails应用程序中正确运行:
db/migrate目录中Patch Rails迁移加载路径以添加引擎迁移目录:
config.paths ["db/migrate"] + = config.paths ["db/migrate"] .extended
...在初始化程序中
您可以在此处找到有关引擎内迁移的详细讨论:https://blog.pivotal.io/labs/labs/leave-your-migrations-in-your-rails-engines
共享种子数据有点不太优雅.数据库种子数据是从单个db/seeds.rb文件加载的,因此通过引擎代码包含自定义种子数据需要从种子文件中挂入引擎代码,例如上面的代码:
MyEngine::Engine.load_seed
Run Code Online (Sandbox Code Playgroud)
没有任何黑客或更简单的方法可以做到这一点.您可以自动将该代码预先添加/附加到db/seeds.rb引擎安装/设置任务中.
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |