Я немного ошеломлен количеством возможных решений, которые сообщество Rails создало для моей проблемы. Так что, возможно, кто-нибудь может помочь мне понять, как решить эту проблему лучше всего.
Что я хочу сделать, так это написать приложение Rails, которое ведет себя как «дропбокс». С одной стороны, это должен быть веб-интерфейс, через который я могу загружать и скачивать файлы на свой веб-сервер. Это взаимодействует с моей базой данных и всем этим. С другой стороны, у меня есть SSH-доступ к этому серверу, и я могу помещать туда файлы вручную. Теперь я хочу, чтобы действия этой файловой системы запускали мое приложение Rails, чтобы делать то, что оно делало бы, если бы я создал файл через веб-интерфейс.
Значит я как-то пишу демона, да? Существует множество решений, например
daemons.rubyforge.org/
github.com/mirasrael/daemons-rails
github.com/costan/daemonz
github.com/kennethkalmer/daemon- Комплект
Еще одна функция, которую я хотел бы иметь, заключается в том, что мое приложение Rails автоматически запускает и останавливает мой демон при запуске или выходе из моего приложения Rails, соответственно. Так что "daemonz" кажется лучшим решением. Но погуглив дальше, я нашел
github.com/FooBarWidget/daemon_controller/
, который кажется намного более «высокотехнологичным» и уже используется при развертывании с пассажиром. Но я не понимаю, убьет ли это моих демонов, когда я уйду из Rails. Я полагаю, что это не так, и поэтому мне интересно, как реализовать это в моем приложении.
Способ реализовать «вещь», реагирующую на изменения файловой системы, кажется мне простым. Я бы использовал
github.com/guard/listen/
(альтернативой может быть: github.com/ttilley/fssm )
Но чего я не понимаю, так как это в первый раз, когда я действительно столкнулся с этим протоколом, если он порождает сервер, с которым я могу общаться, или с каким объектом мне приходится иметь дело.
Последнее, что я хотел бы реализовать, — это своего рода рабочая очередь, чтобы прослушивание изменений файловой системы было отделено от действий моего приложения rails. Но существует так много решений, что я просто не могу выбрать одно:
github.com/tobi/delayed_job/
github.com/defunkt/resque
http://backgroundrb.rubyforge.org/
И что такое
http://godrb.com/
? Как это могло мне помочь?
Кто-нибудь намекает, как это решить? Большое спасибо!
Ян
P.S. Я хотел бы опубликовать ссылки на все проекты github, но, к сожалению, у меня недостаточно «репутации».