Нужна помощь в разработке моего первого приложения на Rails!(включает в себя Twitter, базы данных, фоновые процессы) - PullRequest
0 голосов
/ 21 ноября 2010



Во-первых, позвольте мне упомянуть, что я новичок в веб-фреймворках.

Я должен написать свое первое веб-приложение для проекта Uni. Я потратил две недели на изучение Грааля и Джанго. Вчера начал работать с Rails и ему понравилось. Поэтому я решил пойти на это и отказаться от своей работы в других рамках.

О приложении
Предполагается, что это приложение Twitter, которое использует потоковый API Twitter для записи твитов, соответствующих набору указанных фильтров. (Я собираюсь использовать драгоценный камень Tweetstream, который заботится о подключении к Твиттеру и захвате соответствующих твитов).

Веб-интерфейс приложения должен иметь следующую функциональность -

  • Создание новых запросов
    Пользователь вводит набор параметров фильтра (ключевые слова для отслеживания) и URL / имя пользователя / пароль существующей базы данных PostgreSQL или MySQL.

    Когда создается запрос, веб-приложение запускает фоновый процесс ruby. Этот процесс подключается к Twitter через драгоценный камень Tweetstream. Он также подключается к базе данных, указанной пользователем, для хранения полученных твитов.
  • Просмотр / прекращение существующих запросов
    Пользователь должен иметь возможность видеть список запросов, которые выполняются как фоновые процессы, посещая URL-адрес, такой как / listRequests.
  • Подробнее о процессе / прервать процесс
    Пользователь должен иметь возможность перейти по URL, такому как / запросы / 1 / подробно, чтобы просмотреть некоторые детали (например, как долго выполнялся запрос, количество захваченных твитов и т. Д.). Пользователь также должен иметь возможность завершить процесс.

Моя неопытность показывает, что я не могу понять -

какими должны быть мои модели (возможно, Request должен быть моделью. Tweet не должен быть моделью, поскольку он не хранится локально) как я собираюсь подключиться к удаленным базам данных. как я могу создавать фоновые процессы (backgroundrb ??) и связывать их с объектами запроса, чтобы я мог завершить их, когда пользователь спросит.

В конце концов, я должен построить это сам, поэтому я не прошу вас придумать это для меня. Но некоторые указатели в правильном направлении были бы чрезвычайно полезны и оценены!

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 ноября 2010

Хмм.

Поскольку веб-приложение является лишь тонкой оболочкой для тяжелых процессов, было бы более уместно просто использовать что-то вроде Sinatra здесь.Rails - это большой фреймворк, который потребляет множество вещей, которые вам не понадобятся для этого проекта, даже если он будет работать .

Означает ли здесь требование "фонового процесса" строгоотдельный процесс, или это просто означает параллелизм?TweetStream использует гем EventMachine для обработки обновлений по мере их поступления, который использует отдельный поток для каждого соединения.Было бы вполне возможно порождать клиентов TweetStream из простого веб-приложения Sinatra, хранить их в большом массиве, без проблем запускать их все одновременно и просто запускать stop на данном клиенте, когда вы хотите, чтобы он остановился.Нет необходимости ни в базе данных, ни в чем-либо.

Я не уверен, что именно ваш проф ищет для вас, но MVC на самом деле не подходит.Лучше работать с требованиями, чем превращать их в шаблон дизайна, который ему не соответствует: /

Несмотря на это, я <3 Rails!Обязательно возьмите это на себя, когда вы работаете в основном с объектами, представленными в базе данных:) </p>

1 голос
/ 21 ноября 2010

Довольно проект. Большая часть проблем будет связана не с самими рельсами, а с интеграцией с фоновыми процессами. backgroundrb немного не в моде. Последний коммит в главном проекте github закончился год назад, поэтому, скорее всего, он не подходит для Rails 3. Ищите и оцените ваши варианты. Resque популярен, но я не уверен, соответствуют ли ваши потребности в реальном времени его структуре на основе очередей.

Что касается вашего приложения, я вижу только одну модель, но не называю это запросом. Это зарезервированное имя в рельсах. Возможно, модель поиска или что-то в этом роде.

Соединение с различными базами данных является прямым, но потребует прямой настройки класса ActiveRecord во время работы, а не с использованием database.yml

...