Ruby Sinatra路线中的委托实施

Ruby Sinatra路线中的委托实施,ruby,sinatra,implementation,routes,Ruby,Sinatra,Implementation,Routes,我一直在寻找Rusy Sinatra的良好实践,我在stackoverflow上发现了这个问题: 然而,我想知道如果某条路线背后的业务逻辑很大,该怎么办。将其封装在类(helper/utility)中并从路由中委托给它不是更好吗? 我认为这将保持控制器干净,易于操作。 放置此类实用程序类的最佳文件夹是什么?我工作时使用的模式是: Sinatra Web Handler->“Processor”类(将业务逻辑封装在可重用的路径中,有时在外观后面)。处理器执行任何可能需要的ORM或缓存操作,并知道

我一直在寻找Rusy Sinatra的良好实践,我在stackoverflow上发现了这个问题:

然而,我想知道如果某条路线背后的业务逻辑很大,该怎么办。将其封装在类(helper/utility)中并从路由中委托给它不是更好吗? 我认为这将保持控制器干净,易于操作。
放置此类实用程序类的最佳文件夹是什么?

我工作时使用的模式是:

Sinatra Web Handler->“Processor”类(将业务逻辑封装在可重用的路径中,有时在外观后面)。处理器执行任何可能需要的ORM或缓存操作,并知道何时委托给其他下游处理器(甚至其他内部/外部服务)

这将sinatra路由与应用程序逻辑分离,意味着我们可以插入这些处理器类。我们试图保持处理器类与一个业务流程相关,例如用户创建,并以这样的方式编写它们,以便我们可以在需要时将它们插入到其他端点。实际上,我们使用Sinatra作为HTTP请求路由器进入主应用程序


它似乎工作得很好。

我们在我工作的地方使用的模式是:

Sinatra Web Handler->“Processor”类(将业务逻辑封装在可重用的路径中,有时在外观后面)。处理器执行任何可能需要的ORM或缓存操作,并知道何时委托给其他下游处理器(甚至其他内部/外部服务)

这将sinatra路由与应用程序逻辑分离,意味着我们可以插入这些处理器类。我们试图保持处理器类与一个业务流程相关,例如用户创建,并以这样的方式编写它们,以便我们可以在需要时将它们插入到其他端点。实际上,我们使用Sinatra作为HTTP请求路由器进入主应用程序

它似乎工作得很好