2009-04-09 6 views
1

Je suis un Ruby Noob. Est-ce que quelqu'un dans cette communauté a écrit une application Ruby sans cadre? (edit: Mon but est d'en écrire un seul.) Parlez-nous de votre expérience. Est-ce difficile? Quelles sont les abstractions les plus basses que vous avez utilisées? Quels sont les pièges? Merci.Applications web complètes dans Ruby sans utiliser de frameworks - quelle est la difficulté? Pièges?

+0

titre Reformulé - J'ai été terriblement tenté de répondre «oui» à l'original, ce qui était techniquement la bonne réponse :) –

+0

Toute personne n'utilisant pas un cadre est soit fou ou un génie. Ou les deux. –

Répondre

9

Ceci est une très, très large question. Vous cherchez à écrire votre propre framework, ou juste une simple application de type CGI (vous pouvez le faire avec ERB assez facilement). Le plus grand écueil que je peux voir à ne pas utiliser un framework (y compris celui que vous avez écrit) est qu'il sera beaucoup, beaucoup plus difficile pour les autres de comprendre ce que fait votre code, et pourquoi. De plus, vous perdez tous les tests automatisés, la liaison de données, l'empaquetage, la génération de documents et d'autres goodies liés entre eux.

Bien sûr, si vous faites tout vous-même, vous venez d'écrire un cadre. :)

Sinon, vous avez écrit un horrible désordre de code spaghetti. Qu'est-ce que je ferais, puisque vous êtes un début Rubyist, est de lire la source Rails (ou Sinatra), et essayer de comprendre ce qu'il fait. Pas parce que c'est forcément un bon exemple, mais parce que votre compréhension des frameworks web sera beaucoup plus complète en plongeant dans un couple. Et c'est très, très précieux.

Edit:

Je regardais quelques-unes de vos autres postes, et il semble que vous êtes un étudiant, donc je vais vous mettre en garde contre l'écriture de votre propre cadre, non pas parce qu'elle est une mauvaise idée en soi, mais à cause de ce que représente un cadre logiciel - à savoir, la somme totale des années d'expérience en travaillant avec la langue X.

Les programmeurs sont comme des castors - nous voulons construire. Nous voulons construire tout nous-mêmes, toujours avec l'idée de corriger les lacunes des outils existants. Bien que ce soit une chose très noble, cela a tendance à mener les gens à ne pas faire grand-chose, parce qu'ils ne veulent pas utiliser des outils écrits par d'autres, souvent pour des raisons esthétiques mineures. Les codeurs les plus jeunes sont particulièrement coupables de cela, et je n'étais pas différent - j'ai gaspillé littéralement des années à écrire des serveurs web et des couches d'abstraction de bases de données, au lieu d'écrire des logiciels avec lesquels j'aurais pu gagner de l'argent. Si je pouvais revenir en arrière et faire les choses différemment, j'aurais commencé à contribuer aux cadres qui existaient déjà, plutôt que d'essayer de «faire les choses correctement» à partir de zéro.

Maintenant, il existe une exception à cette règle: "utilisez d'abord le travail des autres", et c'est à ce moment là que vous avez l'expérience des outils pour savoir quand il est temps de construire quelque chose de nouveau. DHH (le gars qui a commencé Rails) était un codeur Ruby très longtemps avant qu'il décide d'écrire Rails. En tant que débutant Ruby, vous êtes probablement mieux servi à lire ce que les autres ont préparé, et à patcher/améliorer cela, plutôt que de commencer par vous-même. Vous en apprendrez plus sur la langue, apporter une contribution précieuse à la communauté, et vous donner un bon résumé.

+0

edit: Mon but est d'écrire un cadre par moi-même. Y a-t-il de bons livres qui mettent l'accent sur les applications CGI et discutent du renforcement du cadre? Merci. – unj2

+0

Écrire votre propre cadre n'est pas une mauvaise idée du tout. La plupart du temps, les frameworks existants veulent couvrir tous les besoins possibles dans un domaine spécifique (* web * par exemple) et faire en sorte que 90% des applications sur le web aient juste besoin de contrôleurs à 10 lignes et autres. Et où est le reste? * Cadre magique! *. Et si quelque chose ne va pas dans le cadre et que la magie disparaît? Oui, je pourrais toujours demander de l'aide, mais comment serait-ce génial de le réparer moi-même parce que je sais exactement ce que fait ce morceau de code? – Shoe

3

Vous devriez vous demander pourquoi vous voulez faire cela. Un cadre simple comme Sinatra ne va vraiment pas vous gêner. Est-ce juste pour l'apprentissage?

Au minimum, vous devriez envisager d'utiliser le middleware Rack pour rendre la vie plus facile pour vous - connecter votre application à rack et rack utiliser pour héberger le site par passager, mince, Mongrel, etc.

Questions connexes