已经写了很多关于引擎开发和使用虚拟应用程序进行测试的文章。
在我们的例子中,我们正在开发一个引擎,它不是一个独立的实体,而是依赖于一个真实的 Rails 3 应用程序。我们仍然希望这段代码存在于引擎中,而不是成为应用程序的一部分,因为引擎的工作是从具有自己的表和模型映射的遗留系统中导入数据,我们希望最终再次将其删除。
旧遗留表和新模式之间的数据映射很复杂,我们希望对引擎进行 TDD(使用 rspec)。
- 我遵循了 Jose Valim 的书“Crafting Rails Appliations”,并且正在使用enginex gem。
- 我已替换
/spec/dummy_app
为指向真正 Rails 3 应用程序的 git 子模块。 - 我无法从引擎加载模型(未定义的符号错误),因为真正的应用程序的 Gemfile 没有指向引擎,而且我也无法修改
config/application.rb
,以要求引擎(这是虚拟应用程序所做的) ,如本书第 15-16 页所述)。 - 我将引擎的
lib
文件夹包含在加载路径$:
中spec_helper
,并且路径可用。 - 投入
require
并spec_helper.rb
没有解决问题。 - 我想知道是否有一个内部 Rails API(或一个聪明的猴子补丁)来挂钩真实应用程序的启动序列并需要引擎,而无需修改真实应用程序的代码(因为它在子模块中)。
- 我不完全确定的另一个问题是我有 2 个 Gemfile(一个在引擎中,一个在应用程序中),当引擎处于活动状态时,它们都应该被使用。
想法?