构建Rails应用程序以通过API使用远程数据库

时间:2015-09-29 11:25:29

标签: ruby-on-rails api

我即将开始创建我的第一个有意义的rails应用程序之一,并且对如何构建事物有点不确定。

这是我的情况。我正在使用SAAS库存软件来跟踪大约4000种产品。我需要一个可以对产品执行日常维护功能的应用程序。例如,给你一个想法:

  • 每周,根据历史销售额计算并设置每种产品的“低库存警报数量”
  • 根据规则将产品分配到产品类别(即如果标题中包含“T恤”字样,则自动将其添加到T恤类别中)
  • 等等

我的问题如下:

  1. 我不确定如何在此应用中构建数据。我每次需要检索产品时都应该查询API吗?或者我应该在本地数据库中构建库存的本地副本,以便更快地进行查询?如果我要构建数据库的本地副本,那么在不消耗太多服务器资源的情况下保留每个产品的最新版本的有效方法是什么?显然我不能同时通过API提取4000个产品......而且我也不希望cron工作每天都在运行。

  2. 我应该在哪里放置远程API函数的代码?我是否创建了一个类,模块或其他东西?

  3. 感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

首先,你真的需要一个网络界面吗?我在您的应用说明中没有看到。如果你想要构建的是一组定期执行的维护工具,为什么要使用Rails?

构建数据的方式取决于您的需求和资源。您的SAAS是否提供有关产品更新的即时通知,例如webhooks?您的SAAS API是否允许您仅获取在特定日期之后更新的产品?对您来说更重要的是,加快速度或使用最新数据?向自己回答这些问题应该可以帮助您确定最佳方法。

关于应用程序设计,看起来您可以编写一个gem,您可以在其中使用不同的模块来管理数据,使用该数据执行操作并连接到第三方服务,并在定期执行的脚本中使用该gem。我建议你阅读一本关于面向对象设计的书,我真的相信它会帮助你,Practical Object-Oriented Design in Ruby。 最后一句话,我在这里做了太多的假设,没有人,但你知道你的要求更好,你的软件设计取决于那个。

答案 1 :(得分:1)

如果您的API遵循REST,则可以使用ActiveResource将其轻松集成到rails中。如果API更复杂,您可以使用ActiveModel并推送自己的实现。只需创建一个自己的基类来处理连接和身份验证,并从中扩展模型。鉴于您对问题的描述有限,我可以说的更多。