设计平台......或API?

时间:2012-06-10 18:45:53

标签: ruby-on-rails ruby

所以我正在考虑建立一个小提醒应用程序。我希望它可以在各种媒体(irc,电子邮件,命令行,网络)中使用,并且考虑如何在不使用大量胶带的情况下设计这样的东西。

因此,例如“提醒我在20分钟内取出垃圾”将是用户可以提交的一件事。然后,这将在20分钟内使用提交的介质(如果可用)和其他默认介质(例如电子邮件)提醒该人。

所以,我不太确定设计这个的好方法。显然我觉得像电子邮件和irc这样的东西需要不同的逻辑,需要单独实现,但我觉得有一个坚实的核心,我想充实,我可以通过各种方式扩展。我只是不知道如何设计这样的东西或什么样的好模型。

我是一名RoR开发人员,并将在ruby中构建它。

那么,采用这种方法的好方法是什么?推荐阅读...类似的问题......我正在努力实现这个目标,但我不确定在哪里看。这基本上是一个API没有? (显然从来没有制作过一个)

1 个答案:

答案 0 :(得分:1)

听起来很干净!以下是我认为有用的一些资源。

每当你有很多不同的服务直接与你的服务交互时,到目前为止最简单(在我看来最为理智)实现这一目的的方法是创建一个REST服务。 IRC,Web,命令行 - 所有这些都可以与RESTful接口进行交互。

Rails默认是RESTful,所以只需使用标准的Rails约定,就可以使用一个很好的标准RESTful API。

此外,Github上有许多用Ruby编写的库,它们可以很容易地与IRC交互并创建命令行工具。

至于电子邮件,最简单的方法是使用服务(例如Mailgun)。使用Mailgun,您可以创建可以接收邮件的电子邮件地址(例如remind_me@reminderapp.com)。 Mailgun负责收到电子邮件并将其解析出来,并将其直接发送到您应用程序中的API端点。有关详细信息,请参阅their documentation。 (重要的是要注意还有其他服务,例如Send Grid也提供入站邮件处理。我使用了很多,而Mailgun是我的推荐。)

我还建议设置一个作业队列来处理提醒和出站通知的入站创建。到目前为止,Resque是用Ruby编写的最好的库(尽管Sidekiq是我喜欢使用的一个有趣的新选择)。 Resque有几个插件,例如resque_mailer,可以很容易地发送电子邮件。您还可以使用resque_scheduler来安排将来发送的通知(例如,在您的示例中,在20分钟内)。

如果您有兴趣发送短信通知,我还会查看TwilioMoonshado。一个免费的解决方案是使用运营商的电子邮件到SMS网关,但总的来说,可传递性是这些问题。 SMS-fu是一个很好的(但很旧的)宝石,但您也可以找到一个列表online并自己动手。

您还应该查看Chronic,这是一个非常棒的自然语言解析器,用于日期和时间(例如,它可以帮助您在“20分钟内”解析。)

希望这有帮助!