web-dev-qa-db-fra.com

Sinatra contre Rails

J'ai travaillé sur certains des échantillons Sinatra et Rails, mais j'ai du mal à déterminer quelles fonctionnalités appartiennent à quelle technologie.

Qu'est-ce que je gagne en particulier avec Sinatra/Rails? Est-ce juste ActionPack/ActionView? Corrigez-moi si je me trompe, mais JE POURRAIS simplement utiliser Webrick/Mongrel et servir mes fichiers .erb non? Et je pourrais utiliser la technologie ActiveRecord dans ces fichiers et toujours accéder aux variables de post, à l'état de session et aux variables de chaîne de requête, n'est-ce pas?

Donc, ce que je vous demande, c'est si je commence avec le scénario PHP ci-dessus; Webrick + ERB + ActiveRecord, qu'est-ce que je gagne en utilisant Sinatra? Et qu'est-ce que je gagne en utilisant Rails?

65
LoveMeSomeCode

Pour Sinatra, c'est presque comme un emballage autour de Rack. Vous devez donc d'abord vous demander quel est l'intérêt de Rack. Rack est essentiellement une spécification sur la façon dont un framework doit retourner un résultat, il peut utiliser ce qui est retourné avec n'importe quel serveur Web pris en charge par Rack. C'est donc vraiment une couche de compatibilité qui vous permet de choisir votre combinaison framework/serveur à volonté, sans vous soucier de savoir si elles fonctionneront ensemble. Si votre infrastructure est compatible avec Rack, vous devriez pouvoir déployer sur pratiquement n'importe quel serveur via Rack.

Maintenant, le truc c'est que Rack est de très bas niveau. Des cadres tels que Sinatra vous offrent des éléments tels que le routage Nice, les assistants, les filtres avant/après et bien plus encore. Il vous suffit de consulter les documents pour voir ce que vous pouvez obtenir. Rails est beaucoup plus riche en fonctionnalités et à bien des égards "magique". Autrement dit, vous pouvez écrire une seule ligne en Rails qui finit par en faire beaucoup) , ce qui pour certains est une bonne chose et pour certains trop magique. Personnellement, je préfère Sinatra pour cette raison, au moins avant d'avoir une bonne compréhension de Rails internes).

62
ehsanul

Le gain de Rails est ActionView/ActionPack. Mais vous pouvez simplement le remplacer par Mongrel/Erb. C'est quelque chose de différent.

C'est tout ce que vous avez à votre avis, comme name_route ou la gestion des erreurs dans votre formulaire. C'est toute la gestion des ressources et tous les plugins comme InheritedResources. L'avantage de Rails.

Il existe des outils comme l'environnement Padrino pour vous aider à avoir tout cet assistant. Mais c'est vraiment plus rapide après tout l'activation du plugin? Je ne pense pas.

Avec Rails 3, Rails est une application Rack complète avec beaucoup de RackMiddleware. Vous pouvez simplement déposer un middleware pour augmenter votre réponse).

5
shingara