Ruby sur les rails

114

Parfois, j'ai l'impression que mon entreprise est la seule au monde à utiliser Ruby mais pas Ruby on Rails, au point que Rails est presque devenu synonyme de Ruby.

Je suis sûr que ce n'est pas vraiment vrai, mais ce serait amusant d'entendre des histoires sur l'utilisation non-Rails de Ruby.

JesperE
la source

Réponses:

51

L'un des énormes avantages de Ruby est la possibilité de créer des DSL très facilement. Ruby vous permet de créer des «règles métier» dans un langage naturel qui est généralement assez facile à utiliser pour un analyste métier. De nombreuses applications Ruby en dehors du développement Web existent à cet effet.

Je recommande fortement Google "ruby dsl" pour une excellente lecture, mais je voudrais vous laisser avec un article en particulier. Russ Olsen a écrit un article de blog en deux parties sur les DSL . Je l'ai vu faire une présentation sur les DSL et c'était très bien. Je recommande vivement de lire ces articles.

J'ai également trouvé cette excellente présentation sur les DSL Ruby par Obie Fernandez . Lecture hautement recommandée!

Sixty4Bit
la source
4
Ligne d'abonné numérique dans Ruby?
5
Domain Specific Language
Sixty4Bit
18

J'utilise beaucoup Ruby dans mon travail, et rien de tout cela n'est basé sur Rails (ou même sur le Web).

Mon domaine est généralement des applications Windows côté client (interface graphique wxRuby) et des scripts, automatisant Excel, Internet Explorer, les requêtes SQL Server et la génération de rapports (automatisation COM win32ole). J'utilise également les bibliothèques sqlite, pdf-writer et gruff pour diverses tâches de munging de données et de génération de graphiques.

Le succès de Rails a été formidable pour Ruby, mais je conviens que Rails a reçu tellement d'attention que la valeur de Ruby au-delà du Web est souvent négligée.

David Mullet
la source
17

Nous sommes principalement une boutique C ++, mais nous avons trouvé plusieurs domaines dans lesquels Ruby s'est avéré très utile. Voici quelques-uns:

  • Génération de code - Création de plusieurs DSL pour générer du code C ++ / Java / C # à partir de fichiers d'entrée uniques
  • Créer un support
    • scripts pour générer des Makefiles pour unix à partir de fichiers de projet Visual Studio
    • scripts pour construire des projets et formater la sortie pour Cruise Control
    • scripts pour exécuter nos tests unitaires et formater la sortie pour Cruise Control
    • scripts pour manipuler des projets et des solutions Visual Studio à partir de la ligne de commande
  • Tests d'intégration - Nous pouvons lancer des tests beaucoup plus rapidement et plus proprement en utilisant Ruby que C ++
  • Toute la suite de tests du contrôle qualité est écrite en Ruby

Ruby est essentiellement mon outil de prédilection pour ce qui est logique. Et cela a du sens dans de nombreux endroits.

Aaron Hinni
la source
1
Vous devriez sérieusement envisager d'utiliser CMake pour générer des fichiers de construction pour Unix (Makefiles) et Windows (Visual Studio).
JesperE
13

Google Sketchup utilise Ruby comme langage de script intégré. Vous pouvez l'utiliser pour effectuer toutes sortes de tâches de modélisation 3D et d'import / export. Le script fonctionne avec la version gratuite et il existe même une documentation décente .

hyperlogique
la source
Hm, intéressant. Je devrais vraiment essayer de prendre le temps de jouer avec Sketchup.
JesperE
9

Ruby avec une extension homebrew écrite en C ++ fait tout le pixel lourd pour mon traitement photographique. J'utilisais Python + numpy mais quand je fais des choses artistiques , Ruby est juste plus amusant. De plus, le manque relatif ou la moindre maturité de bonnes bibliothèques de traitement d'image me donne moins l'impression de réinventer les roues. Je n'ai aucune idée de Rails, à part j'en ai entendu parler, j'ai une idée floue de ce que c'est, et j'ai en fait un livre dessus (non ouvert)

DarenW
la source
8

Nous utilisons Watir (bibliothèque Ruby) pour tester notre application web .net.

Željko Filipin
la source
Watir est extrêmement utile. Nous utilisons également du sélénium parfois via Ruby.
Swanand le
7

Découvrez Shoes , une API simple pour créer des interfaces graphiques dans Ruby destinées aux programmeurs novices.

Parappa
la source
6

Ou vous pouvez utiliser Ruby pour faire de la musique comme Archaeopteryx de Giles Bowkett. Cette présentation de Giles sur Archaeopteryx est l'une des meilleures présentations jamais réalisées. Je le recommande fortement.

Sixty4Bit
la source
1
Des trucs incroyablement fascinants, de la musique générative.
iono
6

RubyCocoa et MacRuby. Possibilité de créer des applications GUI complètes basées sur Cocoa sans Rails. Et vous pouvez également utiliser Interface Builder.

Matthew Schinckel
la source
6

J'ai travaillé sur un projet de musée l'année dernière qui utilisait beaucoup de Ruby. ( http: // http: //ourspace.tepapa.com/home )

La partie sur laquelle j'ai passé le plus clair de mon temps était un plan interactif. La carte sur le sol dispose de capteurs pour que lorsque les gens marchent dessus, les lumières se déclenchent et les affichages sur le mur montrent des images ou des vidéos et des pistes audio.

Tout le code de contrôle pour cette partie de l'exposition est ruby. J'ai écrit des interfaces C avec des enveloppes rubis pour communiquer avec les capteurs de sol et les contrôleurs d'éclairage. Le système interroge une base de données MYSQL pour les fichiers multimédias à afficher, puis indique aux ordinateurs installés dans les murs de lire le média via UDP.

C'est la partie la plus fiable de toute l'exposition.

Ruby a été utilisé pour l'autre grande partie de l'exposition, le mur, même si je n'avais pas grand chose à voir avec ça. La plupart des graphismes ont été prototypés en ruby ​​en utilisant des interfaces vers OpenGL, un peu de Cocoa et une bibliothèque de physique avant d'être portés sur Obj-C pur.

Henri
la source
6

Marionnette et chef: DevOps

Je n'ai pas vu une mention de Puppet ou de Chef dans les 30 réponses qui ont précédé mon arrivée. Ruby semble dominer le travail actuel dans l'automatisation du cloud et est le langage de base, d'extension et de modélisation de ces deux grands acteurs. Ils sont principalement utilisés pour diffuser les informations de configuration du système et des applications pour les baies de serveurs et pour la gestion générale des postes de travail informatiques.

Le champ DevOps est assez compatible avec Ruby. Aujourd'hui, Perl a un concurrent. Bien qu'un script vraiment simple puisse souvent être écrit directement pour sh(1),une tâche complexe, il peut maintenant être fait en Ruby plutôt qu'en Perl.

DigitalRoss
la source
5

Le seul site que j'ai fait avec Ruby au travail utilise Rails, mais j'aimerais essayer Merb .

En dehors de cela, je fais beaucoup de petits programmes utilitaires dans Ruby - par exemple une application qui lit les flux RSS et importe de nouvelles publications dans une base de données.

C'est amusant, alors j'écris aussi des trucs stupides juste parce que c'est si rapide. Hier, j'ai écrit une application pour jouer le problème de Monty Hall 100 000 fois pour aider une amie à convaincre son professeur que le changement est la bonne stratégie.

Palmsey
la source
1
hé, le professeur devrait être capable de comprendre la logique pure derrière ce jeu, pas besoin de simulations là-bas.
vava
Je serais intéressé de voir votre algorithme.
maček
Si je comprends bien, Merb a été à peu près absorbé - ou du moins fertilisé de manière croisée, ou comme vous voulez l'appeler - dans Rails 3.
Andy
4

Je prends presque l'insulte que le rubis est un truc de rails. C'est comme à l'époque où CGI était la dernière tendance et tout le monde pensait que si vous connaissiez perl, vous ne deviez le faire que parce que vous programmiez des applications CGI. Ruby est juste un langage de script pour moi, bien que pas aussi mature que python donc je regrette un peu d'avoir à sauter à travers certains de ses cerceaux et des changements récents, je l'aime toujours et je l'utilise. Bien que je travaille dans une boutique java et que groovy soit donc le choix idéal pour un langage de script, j'utilise toujours ruby ​​à la maison et pour jeter des scripts qui n'ont pas besoin d'être partagés au travail.

J'envisageais d'entrer dans RoR à partir de tout le buzz et de sa rapidité / simplicité, mais après avoir regardé par-dessus les rails, je n'ai rien vu d'étonnant ou même le moins innovant ou rapide dans son développement par rapport à tout autre. cadre. Le seul avantage que j'ai vu était que je pouvais coder en ruby, ce qui serait bien, mais la configuration initiale, la maintenance du serveur et la mise à l'échelle sont plus difficiles, compensant ainsi le plaisir de coder en ruby.

Des morts-vivants
la source
4

J'ai créé une présentation - nommée par hasard Off The Rails - pour discuter des applications Web basées sur Rack:

https://github.com/alexch/Off-The-Rails

Le référentiel git comprend des diapositives au format Markdown et un exemple de code (sous la forme d'applications en cours d'exécution et de middleware). Voici le résumé:

Ruby on Rails est le framework d'application Web le plus populaire pour Ruby. Mais ce n'est pas le seul! Si vous pensez que Rails est trop gros, ou trop opiniâtre, ou trop, vous serez peut-être heureux d'apprendre la nouvelle génération de microframeworks construits sur Rack. Et comme Rails 3 est lui-même une application Rack, vous n'avez pas à abandonner Rails pour bénéficier des routes Sinatra ou des API Grape.

Et voici quelques références:

J'espère que vous le trouverez utile!

AlexChaffee
la source
4

Je suis principalement développeur Web, et j'ai appris à Ruby à utiliser Rails, mais j'aime tellement le langage que j'ai commencé à développer une application de bureau Swing en Ruby, en utilisant JRuby et Monkeybars. Je suis compétent en Java, mais je n'aime pas beaucoup l'utiliser, et l'API Swing est horrible, donc mettre Ruby au sommet a été une grande victoire.

Marnen Laibow-Koser
la source
3

Nous utilisons principalement des rails, mais nous avons beaucoup d'autres choses ruby ​​non-rails - par exemple un démon d'authentification autonome pour l'authentification centralisée des utilisateurs, et un `` serveur de traitement d'image '' qui exécute un nombre arbitraire de processus ruby ​​pour traiter les images en parallèle.

Oh, et n'oubliez pas le bon vieux Rake :-)

Orion Edwards
la source
3

Ruby est également utilisé pour les applications de bureau. Surtout l'utilisation de JRuby pour développer l'application de bureau Swing.

utilisateur23117
la source
3

J'ai utilisé Ruby au travail pendant

  • Un extracteur de données, générant des fichiers csv à partir d'une sortie binaire.
  • Un générateur de fichiers .ini, transformant une syntaxe simple en un format .ini répétitif.
  • Un simple serveur TCP / IP, jouant le rôle de substitut pour le système du client pendant les tests.
AShelly
la source
3

Nous utilisons Ruby pour implémenter notre logiciel d'automatisation de test. Cela inclut le cadre de test et le code du pilote pour Selenium RC, WATIR et AutoIT.

Ruby est suffisamment puissant pour créer des applications complètes pouvant s'interfacer avec des outils de test tels que Selenium ou WATIR, tout en lisant des fichiers de données, en interagissant avec une interface utilisateur Windows distante et en effectuant une communication réseau quasi transparente. Tout en fonctionnant sous Windows ou Linux.

La syntaxe épurée le rend idéal pour les programmeurs nouveaux et inexpérimentés à lire. Bien que sa nature totalement OO, il soit facile pour ces mêmes programmeurs d'appliquer de bonnes techniques OO (récemment apprises), dès le début.

La nature flexible de la syntaxe de Ruby facilite également l'utilisation et la création de DSL. Cela permet aux personnes moins techniques de s'impliquer, de lire et éventuellement de créer leurs propres tests.

Peter
la source
Toutes les gemmes ne fonctionnent pas aussi bien sur Windows. Linux est un environnement beaucoup plus fluide sur lequel exécuter ruby ​​d'après mon expérience.
Zombies
3

J'ai utilisé Ruby pour la génération de code de procédures stockées C # et T-SQL dans un projet avec des exigences instables. Le modèle de données a été codé dans un fichier YAML et des modèles .erb ont été utilisés pour les classes et les procédures stockées. Cela a également permis une solution beaucoup plus DRY que ce qui aurait été possible avec le C # simple car le code répétitif pouvait être factorisé en une seule méthode dans le générateur de code.

domgblackwell
la source
3

Là où je travaille, nous utilisons Ruby pour effectuer un certain nombre de travaux par lots de type unique. Un exemple de cela est un travail qui interagit avec le service S3 d'Amazon. À l'époque, la bibliothèque Ruby S3 était probablement la plus simple à mettre en place et à fonctionner en peu de temps.

mmacaulay
la source
3

J'ai écrit un système expert de traitement des commandes (voir également la réponse DSL), converti 100k lignes de perl spécifique au client en environ 10k lignes de rubis gérant des dizaines de clients. Pas de composants Web du tout, pas de rails.

mmaibaum
la source
3

Heh, excellente question.

J'ai utilisé Ruby pour convertir les données des installations aéroportuaires du tableur Excel en sqlite3 pour la plate-forme de téléphone Android tout en créant une application pour les pilotes.

DigitalRoss
la source
3

J'utilise Ruby avec Sinatra qui est beaucoup plus simple que Rails. J'ai utilisé Rails, mais je viens de constater qu'il est devenu un peu un monstre, bien que Rails soit toujours incroyable par rapport aux frameworks Web disponibles pour Java.

La caractéristique principale de Ruby que j'aime cependant est "eval" et "method_missing", que Rails utilise par exemple dans ActiveRecord afin que vous puissiez utiliser les étonnantes requêtes "find_by-field-name-".

appshare.co
la source
3

J'ai utilisé Ruby pour beaucoup de code back-end simplement parce que j'étais la seule personne chargée de le faire et j'avais besoin d'un joli langage propre qui me permettait d'être très productif et d'écrire du code facile à maintenir. Je trouve que Ruby me permet de faire cela plus facilement que Perl et Python. Le kilométrage des autres peut varier, mais cela fonctionne bien pour moi.

En plus de cela, j'aime le fonctionnement de Sequel et Nokogiri. J'ai également utilisé ActiveRecord pendant un certain temps séparément de Rails.

l'homme d'étain
la source
2

Nous utilisons du Ruby pour la manipulation de fichiers mais n'avons pas encore été en mesure d'incorporer des rails.

FortunateDuke
la source
2

J'ai beaucoup utilisé Ruby professionnellement pour des scripts rapides pour des choses comme le brassage de fichiers. Je suis de la même manière que j'utilisais Ruby avant de toucher du tout à Rails.

madlep
la source
2

À Boulder, il y avait un excellent groupe d'utilisateurs de Ruby qui se réunissaient tous les mois. Ce point a été fait - que Ruby a une existence à côté de son utilisation dans Rails. Les utilisateurs de Plain Ruby existent, sollicitent leur attention, ont des choses intéressantes à montrer et peuvent se retrouver lors de réunions de groupes d'utilisateurs.

Ils avaient également une meilleure pizza que le groupe Python, qui se réunissait également le même jour du mois. Je ne peux en choisir qu'un ...

DarenW
la source
1
Ouais, mais le groupe Python avait mieux Py! (blague boiteuse, je sais, je sais ...)
dguaraglia
tellement drole que j `ai oublié de rire! 8P
DarenW
2

Bien que nous ayons plusieurs applications Rails au travail, nous utilisons également Ruby pour des éléments non Web assez intensifs.

Nous avons un démon de livraison de SMS, qui extrait les messages d'une file d'attente puis les délivre, et un démon de traitement de carte de crédit auquel d'autres applications peuvent appeler, ce qui garantit qu'il existe une piste d'audit centrale.

Jon Wood
la source