生成Rails引擎时,一个生成的产品是test/dummy
下的完整基本Rails应用程序。您希望能够在应用程序的上下文中测试引擎是有道理的,但令我惊讶的是,即使对于{{1}等非测试活动,似乎也需要test/dummy
应用程序。 }。
我尝试从rake db:migrate
删除对虚拟应用程序的引用,但它似乎被硬编码到引擎系统中(参见engine.rake
中对Rakefile
的引用)。 / p>
我试图将Rails应用程序转换为引擎,并遇到配置,加载顺序等各种问题。当我放置断点并查看调用堆栈时,它看起来至少有一些问题是原始应用程序中的配置脚本(例如APP_RAKEFILE
)与生成的虚拟对象之间的差异。
有人可以解释为什么需要虚拟应用程序以及它所服务的功能?我应该期望使用原版'生成虚拟,或正在修改/定制它不可避免?
答案 0 :(得分:0)
您通常无需触摸虚拟应用。虚拟应用程序提供了运行引擎的准系统应用程序(请记住,引擎无法自行运行)。当您尝试执行“应用程序级”操作(如运行rake任务或引擎根目录中的测试)时,它将用作应用程序。这样,引擎保持独立,并且不必依赖外部应用程序来提供引擎应该运行的上下文。我相信虚拟应用程序仅用于rake任务和测试框架。