2010-08-04 8 views
1

Il me semble que Rails brille lors de la construction d'applications Web telles que l'application de magasin en ligne Depot présentée dans le Agile book ou le système de gestion de projet Basecamp. Le point crucial de ces applications est leur interface web, et Rails vous donne les outils pour créer ces webapps rapidement, facilement et élégamment.Rails peut-il être utilisé avec une application non centrée sur le Web?

Mais qu'en est-il si vous avez une application avec une interface de ligne de commande pour laquelle vous souhaitez ajouter un frontal? Par exemple, imaginez une application qui traite des fichiers EDI tiers: elle les récupère d'un serveur FTP, les analyse, insère les données dans une base de données et envoie des rapports par e-mail. Le calendrier de lancement de l'application, les rapports qui doivent être générés, qui doit recevoir l'e-mail, etc. sont tous configurés dans une base de données. Et bien que le point principal de l'application soit le traitement des fichiers EDI et que vous souhaitiez l'exécuter via cron, vous souhaitez créer une page Web pour permettre aux utilisateurs de gérer les rapports qu'ils reçoivent, la fréquence à laquelle ils les reçoivent,

L'application de ligne de commande et la page Web doivent toutes deux accéder aux mêmes données dans la base de données. Ils devraient être capables de partager des modèles et une logique métier. Si l'application de ligne de commande contient déjà une bibliothèque avec une couche d'accès aux données, existe-t-il un moyen de tirer parti de cette bibliothèque dans Rails? Ou, inversement, existe-t-il un moyen de réutiliser les modèles et les contrôleurs de Rails dans une application externe? Ou est-ce que cela n'a pas de sens d'utiliser Rails comme framework Web dans ce scénario?

Répondre

4

Vous pouvez toujours inclure la bibliothèque ActiveRecord (et ActiveSupport) dans une application ruby ​​classique, si vous cherchez à faire abstraction de la couche modèle pour une application db centric.

2

En fait, la plupart des applications rails ont une interface web et une interface de ligne de commande - via rake.

Les exemples classiques sont des travaux par lots qui doivent être exécutés périodiquement, par cron ou à chaque fois. Mais il est également possible d'exécuter ces tâches manuellement.

Si j'étais vous, j'essaierais de construire quelques tâches de rake à l'intérieur de lib/tasks afin de mapper ces commandes de ligne de commande.

Questions connexes