我是否需要在 Rails 4 引擎中自定义生成的虚拟应用程序?

Should I need to customize the generated dummy app in a Rails 4 engine?

当您生成 Rails 引擎时,一个生成的产品是 test/dummy 下的完整基础 Rails 应用程序。您希望能够在应用程序的上下文中测试引擎是有道理的,但令我惊讶的是,即使对于 rake db:migrate 等非测试活动,似乎也需要 test/dummy 应用程序。

我尝试从 Rakefile 中删除对虚拟应用程序的引用,但它似乎被硬编码到引擎系统中(参见 engine.rake 中对 APP_RAKEFILE 的引用) .

我正在尝试将 Rails 应用程序转换为引擎,并将 运行 转换为配置、加载顺序等各种问题。当我放置断点并查看调用堆栈时,看起来至少有一些问题是原始应用程序中的配置脚本(例如 boot.rb)与生成的虚拟文件之间的差异。

谁能解释一下为什么需要虚拟应用程序以及它有什么功能?我应该期望使用 'original' 生成的假人,还是 modifying/customizing 它不可避免?

您通常不必触摸虚拟应用程序。虚拟应用程序为 运行 您的引擎提供了一个准系统应用程序(请记住,引擎不能单独 运行 )。当您尝试在引擎的根目录中执行 "application level" 之类的 运行 rake 任务或测试时,它被用作应用程序。通过这种方式,引擎保持独立,并且不必依赖外部应用程序来提供引擎应该 运行 的上下文。我相信虚拟应用程序仅用于 rake 任务和测试框架。