【问题标题】:Need help designing my first Rails app! (involves Twitter, databases, background processes)需要帮助设计我的第一个 Rails 应用程序! (涉及 Twitter、数据库、后台进程)
【发布时间】:2010-11-21 11:56:47
【问题描述】:



首先让我提一下,我是网络框架的新手。

我必须为 Uni 项目编写我的第一个 Web 应用程序。我花了两周时间学习 Grails 和 Django。昨天开始使用 Rails 并喜欢它。所以我决定继续使用它并放弃我在其他框架中的工作。

关于应用程序
它应该是一个 Twitter 应用程序,它利用 Twitter 的 Streaming API 来记录匹配一组指定过滤器的推文。 (我将使用 Tweetstream gem,它负责连接到 Twitter 并捕获匹配的推文)。

应用程序的网络界面应具有以下功能 -

  • 创建新请求
    用户输入现有 PostgreSQL 或 MySQL 数据库的一组过滤器参数(要跟踪的关键字)和 URL/用户名/密码。

    创建请求时,Web 应用程序会生成一个后台 ruby​​ 进程。此过程通过 Tweetstream gem 连接到 Twitter。它还连接到用户指定的数据库以存储收到的推文。
  • 查看/终止现有请求
    用户应该能够通过访问诸如 /listRequests 之类的 URL 来查看作为后台进程运行的请求列表。
  • 查看有关进程的更多详细信息/终止进程
    用户应该能够访问诸如 /requests/1/detail 之类的 URL 以查看一些详细信息(例如,请求运行了多长时间、捕获的推文数量等)。用户还应该能够终止进程。

由于我无法理解,我缺乏经验 -

  • 我的模型应该是什么(也许请求应该是一个模型。推文不需要是一个模型,因为它没有存储在本地)
  • 我将如何连接到远程数据库。
  • 如何创建后台进程 (backgroundrb??) 并将它们与请求对象相关联,以便在用户询问时终止。

    归根结底,我必须自己构建这个,所以我不要求你为我设计这个。但是一些正确方向的指示会非常有帮助和感激!

    谢谢!

  • 【问题讨论】:

    • 喂。他们把这个分配给你作为你的第一个项目‽
    • 是的。这只是项目的第一步。我的学位实际上并不涉及太多编程,但我自己已经完成了很多。我学得很快,所以我想我会没事的 :) 已经在 Django 中完成了一些工作。编写了一个 Java 应用程序来处理数据库和 Twitter 功能。当我不得不使用 Python 的子进程管理从 Django 中调用它时,我感到很困惑。

    标签: ruby-on-rails twitter rubygems database-connection backgroundrb


    【解决方案1】:

    嗯。

    由于 Web 应用程序只是繁重流程的一个薄包装,因此在此处使用 Sinatra 之类的内容可能更合适。 Rails 是一个很大的框架,它包含了很多你在这个项目中不需要的东西,即使它会工作

    这里的“后台进程”要求是严格意义上的独立进程,还是仅仅意味着并发? TweetStream 使用 EventMachine gem 来处理更新,它为每个连接使用一个单独的线程。很有可能从一个简单的 Sinatra Web 应用程序生成 TweetStream 客户端,将它们保存在一个大数组中,让它们全部同时运行而不会出现任何问题,并且当您希望它停止时,只需在给定客户端上运行 stop。不需要数据库或任何东西。

    我不确定你的教授到底要你做什么,但 MVC 并不适合。与需求一起工作比将其混入与它不匹配的设计模式更好:/

    即便如此,我

    【讨论】:

    • “后台进程”要求只是 Twitstreams 在后台持续运行,直到用户明确终止。我会研究一下 Sinatra,看看我能用它做什么!
    【解决方案2】:

    真是一个项目。大多数具有挑战性的东西与 Rails 本身无关,而是与后台进程的集成。 backgroundrb 有点过时了。主 github 项目的最后一次提交是一年多以前,因此 Rails 3 可能不适合。四处搜索并评估您的选择。 Resque 很受欢迎,但我不确定您的实时需求是否与其基于队列的结构相匹配。

    至于您的应用,我只看到一个模型,但不要将其称为请求。这是rails中的保留名称。也许是搜索模型,或者类似的东西。

    连接到不同的数据库很简单,但需要在操作期间直接配置 ActiveRecord 类,而不是使用 database.yml。

    【讨论】:

    • 谢谢!与不同数据库的连接可能由后台 ruby​​ 脚本处理。
    猜你喜欢
    • 2011-09-09
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2023-03-24
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多