我需要从模型生成xml并将其发送到模型保存的Web服务。 我确信这是一个常见的案例,应该是直截了当的。只需在after_save回调上创建一个生成xml并将其发送到端点的作业。
由于我是Ruby on Rails的新手,我不确定如何处理这个问题。我的问题更多的是关于代码组织。这种api连接将来不会停止使用,因此我需要一种干净的模块化方式来摆脱它。将它放在一个单独的宝石中是最佳做法/惯例吗? Gems实际上可以将作业添加到现有的rails队列吗? Gems可以在安装时创建迁移吗?我可能需要添加一个模型来跟踪api同步。如何在gem卸载上删除表?或者根本不应该使用宝石?
我意识到这些是广泛而基本的Ruby on Rails问题,但我有点淹没在文档中。我只是希望提供一些示例和/或建议,以及对相关文档的一些指示。感谢。
答案 0 :(得分:1)
Gem安装/卸载与应用程序无关,它们位于不同的级别,除非已加载,否则不会对应用程序代码,db等进行任何操作。
用于rails的Gems可以提供rake任务和/或生成器,例如,你可以查看devise
gem结构如何做到这一点。
但我建议您在知道必须之前将代码移动到gem中,例如当您需要在不同的项目中重用它时。
要在单个项目中重用代码 - 请使用mixins / concerns
答案 1 :(得分:1)
一般来说:
updated_at
ActiveJob
+ one of the backends运行这些内容(虽然显然不是:inline
后端,理想情况下是不使用您的后端之一主数据库并允许异步作业提交 - 作为候选人想到sidekiq