我有一个在 gem
MyGreatEngine
中定义的 Rails 引擎 mge
。该引擎提供两种类型的路由,一种与 API 相关,一种与静态文件相关。
我想导出两组路由,一组用于API,一组用于静态文件。这将允许我将它们安装在使用该引擎的应用程序中的不同位置。例如,一个人可以将这些路线分别安装在
/api/
和 /static
上,而另一个人可以将它们安装在 /api/v1/
和 /staticfiles/
上。
由于我还没有找到分割路线的方法,所以我只有两种选择:我可以定义两个单独的引擎,和第三个 gem 来实现它们的共享位,或者我可以将引擎安装在
/
和放弃在应用程序中自定义前缀的能力(因此所有应用程序都将使用 /api/
和 /static/
)。从我的角度来看,这两种方法都有问题。
您不必为每个引擎创建单独的 gem。一颗宝石可以包含多个引擎。您可以分别为它们指定路由,并轻松共享其他功能。
MyGreat::APIEngine.routes.draw do
# ...
end
MyGreat::StaticEngine.routes.draw do
# ...
end
我很确定这应该可以开箱即用,零额外配置。