我看到了他们的app
文件夹,但看不到Rails如何使用该文件夹。
我的尝试是搜索railtie
和views_path
,因为我有兴趣编写共享视图和帮助文件的gem。我怎样才能做到这一点?
在哪里可以找到有关此文档的文档?我应该用谷歌搜索哪个关键字:铁路,引擎?
像Devise之类的宝石使用Rails中一个称为Engines的功能。
引擎基本上允许您构建自己的功能并将它们无缝地插入另一个应用程序,从而有效地使引擎中的视图,模型和控制器可用,就好像它们是其中的一部分一样。
Rails引擎不仅是在gem中提供功能的好方法,而且通过将各种功能组合在一起,可以使自己的应用保持整洁。
如果您想了解细节,Rails Engine只是一种特殊的Rack应用程序。这样,它可以由Rails路由器安装。简而言之,Rails路由器会检测对这些应用已“安装”到的路径的请求,并将其路由到引擎提供的控制器(而不是常规控制器)。
确保不要将此概念与Omniauth等其他宝石混淆。
此类宝石提供了Rack Middleware,并不一定需要通过Rails路由器将其集成到应用程序中。
您需要多了解一些有关Rack的知识,以了解其工作原理,但实际上,对应用程序的每个请求都必须先通过Omniware(例如Omniauth)进行传递,然后才能真正到达Rails路由器。所说的中间件可以自己响应请求(基本上使它停止并且永远不会到达路由器和应用程序的其余部分),或者“增强”请求(例如,Omniauth检查并执行认证,然后将数据存储在请求中env
)将请求传递给下一个中间件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句