目前我正在开发一个RoR应用程序(2.3.14 with ActiveRecord)(我们称之为A)。
现在我开始了另一个项目B(使用capybara的远程测试应用程序,看起来像这样:https://github.com/searls/remote-capybara-cucumber-example)。
但现在我需要访问应用程序B的模型以进行测试数据设置(以及可能的测试断言)。因此,我想使用现有的模型类(如有必要,还可以使用一些其他库,如factory_girl)。
我当然不希望将我的项目B包装在Rails应用程序中并复制模型类。那么有没有办法组织A以便B可以访问模型并创建/更新/销毁实体?
是否有任何关键词需要进一步研究(我尝试了几个谷歌搜索,包含rails模型作为宝石,作为插件,外部化轨道模型等...但没有任何有用的东西(主要是ActiveRecord的文档)
答案 0 :(得分:1)
Rails 2.x确实很难在两个应用程序之间共享模型层。
如果您不关心维护迁移两次,可以将模型放入gem中,然后在应用中使用它。
另一种方法是将db
和app/models
目录从两个应用程序符号链接到共享文件夹。虽然你必须小心,但这很有效,因为rake任务和生成器现在会影响两个应用程序。
Rails 3.1附带了改进的rails引擎实现。引擎允许您隔离导轨应用程序的各个部分并将其打包为宝石。
答案 1 :(得分:-1)
您可以尝试使用别名(符号链接)到B项目中A的app / models目录。
在Mac / Linux上:
ln -s /volumes/code/project-a/app/models/ /volumes/code/project-b/models