2011-12-30 4 views
1

Je fais une application web qui traitera les gros fichiers (1Go +). Pendant que les fichiers sont téléchargés, je dois pouvoir accéder aux données du fichier (tout ce qui est téléchargé jusqu'à présent), et éventuellement changer l'emplacement de ces fichiers téléchargés (actuellement avec le mongrel ils sont dans le dossier TMP).Quel cadre/serveur dois-je utiliser (Ruby)

Je sais que je ne devrais pas utiliser RoR pour faire cela car c'est trop haut niveau. Je devrais travailler avec le serveur comme Mongrel ou Unicorn, ou peut-être Rack qui comme j'ai appris est comme un lien entre le serveur Web et le cadre comme RoR.

Ma question est,

  1. Quel serveur/cadre (Mongrel, Unicorn, mince, etc.) dois-je utiliser?
  2. Est-ce que vous avez recommandé de faire cela avec Ruby? I.E, devrait-il être fait à un niveau beaucoup plus bas (comme Nginx plugin), ou en utilisant un serveur Ruby qui s'arrête au-dessus de Nginx est bien?

Merci

+1

Je pense que vous devriez utiliser build ce serveur sur [EventMachine] (https://github.com/eventmachine/eventmachine). –

+0

Hm .... merci pour l'entrée. Vérification. – 0xSina

+1

Vous voudrez peut-être jeter un coup d'œil à [Sinatra] (http://www.sinatrarb.com/). Il est en Ruby et sera facile à prendre si vous avez programmé avec des rails, mais il n'a pas tout le ballonnement des rails afin que vous puissiez choisir ce que vous voulez ajouter dedans. Vous pouvez également choisir le serveur Web avec lequel vous souhaitez l'exécuter. Je recommanderais 'Unicorn' car il a plusieurs threads à la fois mais est beaucoup plus efficace que le mongrel. [Ce billet décrit bien les avantages d'Unicorn] (https://github.com/blog/517-unicorn). – Batkins

Répondre

0

Je recommande vivement regarder EventMachine.

En plus de cela, j'utiliser la bibliothèque em-http-request pour le streaming téléchargement de fichiers (penser comme async Net :: HTTP)

Vous trouverez peut-être this talk de Ruby Manor comparer Goliath, Node.js et EM utile aussi.