Rubin von den Schienen

114

Manchmal scheint es, dass meine Firma die einzige Firma auf der Welt ist, die Ruby verwendet, aber nicht Ruby on Rails, bis zu dem Punkt, dass Rails fast zum Synonym für Ruby geworden ist.

Ich bin mir sicher, dass dies nicht wirklich stimmt, aber es würde Spaß machen, einige Geschichten über die Verwendung von Nicht-Rails Ruby zu hören.

JesperE
quelle

Antworten:

51

Einer der großen Vorteile von Ruby ist die Möglichkeit, DSLs sehr einfach zu erstellen. Mit Ruby können Sie "Geschäftsregeln" in einer natürlichen Sprache erstellen, die für einen Geschäftsanalysten normalerweise einfach zu verwenden ist. Zu diesem Zweck gibt es viele Ruby-Apps außerhalb der Webentwicklung.

Ich empfehle Googeln "ruby dsl" für eine hervorragende Lektüre, aber ich möchte Ihnen insbesondere einen Beitrag hinterlassen. Russ Olsen schrieb einen zweiteiligen Blog-Beitrag über DSLs . Ich habe gesehen, wie er eine Präsentation über DSLs gehalten hat und es war sehr gut. Ich empfehle dringend, diese Beiträge zu lesen.

Ich fand auch diese hervorragende Präsentation über Ruby DSLs von Obie Fernandez . Sehr empfehlenswerte Lektüre!

Sixty4Bit
quelle
4
Digitale Teilnehmerleitung in Ruby?
5
Domain-spezifische Sprache
Sixty4Bit
18

Ich benutze Ruby ausgiebig in meiner Arbeit und nichts davon basiert auf Rails (oder sogar Web).

Meine Domäne besteht normalerweise aus clientseitigen Windows- Anwendungen (wxRuby-GUI) und Skripten, die Excel, Internet Explorer, SQL Server-Abfragen und die Berichterstellung automatisieren (Win32ole COM-Automatisierung). Ich verwende auch die SQLite-, PDF-Writer- und Gruff-Bibliotheken für verschiedene Aufgaben im Bereich Datenmunging und Graphgenerierung.

Der Erfolg von Rails war für Ruby großartig, aber ich stimme zu, dass Rails so viel Aufmerksamkeit erhalten hat, dass Rubys Wert jenseits des Webs oft übersehen wird.

David Mullet
quelle
17

Wir sind hauptsächlich ein C ++ - Shop, aber wir haben einige Bereiche gefunden, in denen sich Ruby als sehr nützlich erwiesen hat. Hier sind ein paar:

  • Codegenerierung - Mehrere DSLs wurden erstellt, um C ++ / Java / C # -Code aus einzelnen Eingabedateien zu generieren
  • Build-Support
    • Skripte zum Generieren von Makefiles für Unix aus Visual Studio-Projektdateien
    • Skripte zum Erstellen von Projekten und Formatieren der Ausgabe für Cruise Control
    • Skripte zum Ausführen unserer Komponententests und zum Formatieren der Ausgabe für die Geschwindigkeitsregelung
    • Skripte zum Bearbeiten von Visual Studio-Projekten und -Lösungen über die Befehlszeile
  • Integrationstests - Mit Ruby können wir Tests viel schneller und sauberer durchführen als mit C ++
  • Die gesamte Testsuite von QA ist in Ruby geschrieben

Ruby ist im Grunde mein Werkzeug, wo es Sinn macht. Und es macht an vielen Stellen Sinn.

Aaron Hinni
quelle
1
Sie sollten ernsthaft in Betracht ziehen, CMake zum Generieren von Build-Dateien für Unix (Makefiles) und Windows (Visual Studio) zu verwenden.
JesperE
13

Google Sketchup verwendet Ruby als eingebettete Skriptsprache. Sie können damit alle Arten von 3D-Modellierungs- und Import- / Exportaufgaben ausführen. Das Scripting funktioniert mit der kostenlosen Version und es gibt sogar eine anständige Dokumentation .

hyperlogisch
quelle
Hm, interessant. Ich sollte wirklich versuchen, etwas Zeit zu bekommen, um mit Sketchup herumzuspielen.
JesperE
9

Ruby mit einer in C ++ geschriebenen Homebrew-Erweiterung erledigt den ganzen Pixel-Push für meine Fotoverarbeitung. Ich habe Python + Numpy verwendet, aber wenn ich künstlerische Sachen mache , macht Ruby einfach mehr Spaß. Auch das relative Fehlen oder die geringere Reife guter Bildverarbeitungsbibliotheken lässt mich weniger das Gefühl haben, Räder neu zu erfinden. Ich habe keine Ahnung von Rails, außer ich habe davon gehört, habe eine unscharfe Vorstellung davon, was es ist, und habe tatsächlich ein Buch darüber (ungeöffnet)

DarenW
quelle
8

Wir verwenden Watir (Ruby-Bibliothek), um unsere .net-Webanwendung zu testen.

Željko Filipin
quelle
Watir ist äußerst nützlich. Wir verwenden Selen manchmal auch über Ruby.
Swanand
7

Schauen Sie sich Shoes an , eine einfache API zum Erstellen von GUIs in Ruby, die sich an unerfahrene Programmierer richtet.

Parappa
quelle
6

Oder Sie könnten Ruby verwenden, um Musik zu machen, ua Giles Bowketts Archaeopteryx. Diese Präsentation von Giles über Archaeopteryx ist eine der besten Präsentationen aller Zeiten. Ich empfehle es sehr.

Sixty4Bit
quelle
1
Unglaublich faszinierendes Zeug, generative Musik.
Iono
6

RubyCocoa und MacRuby. Es ist möglich, vollständige Cocoa-basierte GUI-Apps ohne Rails zu erstellen. Und dann können Sie auch Interface Builder verwenden.

Matthew Schinckel
quelle
6

Ich habe letztes Jahr an einem Museumsprojekt gearbeitet, bei dem viel Ruby verwendet wurde. ( http: // http: //ourspace.tepapa.com/home )

Der Teil, an dem ich die meiste Zeit verbracht habe, war eine interaktive Grundrisskarte. Die Karte auf dem Boden verfügt über Sensoren. Wenn Personen darauf gehen, werden Lichter ausgelöst und Anzeigen an der Wand zeigen Bilder oder Videos und Audiospuren.

Der gesamte Kontrollcode für diesen Teil der Ausstellung ist rubinrot. Ich habe C-Schnittstellen mit Rubinverpackungen geschrieben, um mit den Bodensensoren und den Lichtsteuerungen zu kommunizieren. Das System fragt eine MYSQL-Datenbank nach den anzuzeigenden Mediendateien ab und weist die Computer in den Wänden an, die Medien über UDP abzuspielen.

Es ist der zuverlässigste Teil der gesamten Ausstellung.

Ruby wurde für den anderen großen Teil der Ausstellung verwendet, die Mauer, obwohl ich damit nicht viel zu tun hatte. Die meisten Grafiken wurden in Ruby unter Verwendung von Schnittstellen zu OpenGL, etwas Kakao und einer Physikbibliothek prototypisiert, bevor sie auf reines Obj-C portiert wurden.

Henry
quelle
6

Marionette und Koch: DevOps

Ich habe in den 30 Antworten vor meiner Ankunft keine Erwähnung von Puppet oder Chef gesehen . Ruby scheint die aktuelle Arbeit in der Cloud-Automatisierung zu dominieren und ist die Basis, Erweiterung und Vorlagensprache dieser beiden großen Player. Sie werden hauptsächlich zum Verteilen von System- und Anwendungskonfigurationsinformationen für Server-Arrays und für die allgemeine Verwaltung von IT-Workstations verwendet.

Das DevOps- Feld ist ziemlich Ruby-fähig. Heute hat Perl einen Konkurrenten. Während ein wirklich einfaches Skript oft noch direkt für sh(1),eine komplexe Aufgabe geschrieben wird, kann es jetzt eher in Ruby als in Perl ausgeführt werden.

DigitalRoss
quelle
5

Die einzige Seite, die ich mit Ruby bei der Arbeit gemacht habe, ist die Verwendung von Rails, aber ich würde gerne Merb ausprobieren .

Abgesehen davon mache ich viele kleine Hilfsprogramme in Ruby - zum Beispiel eine App, die RSS-Feeds liest und neue Beiträge in eine Datenbank importiert.

Es macht Spaß, also schreibe ich auch ein paar dumme Sachen, nur weil es so schnell geht. Gestern habe ich eine App geschrieben, um das Monty Hall-Problem 100.000 Mal zu spielen, damit eine Freundin ihren Professor davon überzeugen kann, dass das Wechseln die richtige Strategie ist.

Palmsey
quelle
1
Hey, Professor sollte in der Lage sein, die reine Logik hinter diesem Spiel zu verstehen, ohne dass dort Simulationen erforderlich sind.
Vava
Es würde mich interessieren, Ihren Algorithmus zu sehen.
Maček
Wenn ich das richtig verstehe, wurde Merb so ziemlich in Rails 3 aufgenommen - oder zumindest gegenseitig befruchtet oder wie auch immer Sie es nennen wollen
Andy
4

Ich beleidige mich fast, dass Rubin eine Schienensache ist. Es ist wie damals, als CGI der neueste Trend war und alle dachten, wenn Sie Perl kennen, müssen Sie dies nur tun, weil Sie CGI-Apps programmiert haben. Ruby ist für mich nur eine Skriptsprache, obwohl sie nicht so ausgereift ist wie Python. Ich bedauere daher, dass ich einige ihrer Rahmen und die letzten Änderungen durchgehen muss. Ich mag sie immer noch und verwende sie. Obwohl ich in einem Java-Shop arbeite und daher groovig die ideale Wahl für eine Skriptsprache ist, verwende ich Ruby zu Hause und zum Wegwerfen von Skripten, die bei der Arbeit nicht geteilt werden müssen.

Ich erwäge in RoR von allen immer das Summen und wie schnell / einfach es ist, aber nach mit Blick auf Schienen ich gar nichts gesehen , die erstaunlich war oder sogar die geringste innovative oder schnell schnell über seine Entwicklung im Vergleich zu jedem anderen Rahmen. Der einzige Vorteil, den ich sah, war, dass ich in Ruby codieren konnte, was nett wäre, aber die anfängliche Einrichtung, Serverwartung und Skalierung ist schwieriger, wodurch das Vergnügen, in Ruby zu codieren, wieder ausgeglichen wird.

Zombies
quelle
4

Ich habe eine Präsentation mit dem zufälligen Namen Off The Rails erstellt, um Rack-basierte Webanwendungen zu diskutieren:

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

Das Git-Repo enthält Folien im Markdown-Format und Beispielcode (in Form von laufenden Anwendungen und Middleware). Hier ist die Zusammenfassung:

Ruby on Rails ist das beliebteste Webanwendungsframework für Ruby. Aber es ist nicht der einzige! Wenn Sie der Meinung sind, dass Rails zu groß, zu eigensinnig oder zu groß ist, können Sie sich über die neue Generation sogenannter Mikroframeworks freuen, die auf Rack basieren. Und da Rails 3 selbst eine Rack-App ist, müssen Sie Rails nicht aufgeben, um von Sinatra-Routen oder Trauben-APIs zu profitieren.

Und hier sind einige Referenzen:

Ich hoffe, Sie finden es nützlich!

AlexChaffee
quelle
4

Ich bin größtenteils Webentwickler und habe Ruby gelernt, Rails zu verwenden, aber ich mag die Sprache so sehr, dass ich mit der Entwicklung einer Desktop-Swing-Anwendung in Ruby unter Verwendung von JRuby und Monkeybars begonnen habe. Ich bin kompetent in Java, aber ich mag es nicht sehr, und die Swing-API ist schrecklich, also war es ein großer Gewinn, Ruby an die Spitze zu bringen.

Marnen Laibow-Koser
quelle
3

Wir verwenden hauptsächlich Rails, aber wir haben viele andere Ruby-Dinge, die keine Rails sind - zum Beispiel einen eigenständigen Authentifizierungsdämon für die zentralisierte Authentifizierung von Benutzern und einen 'Bildverarbeitungsserver', der eine beliebige Anzahl von Ruby-Prozessen ausführt, um Bilder parallel zu verarbeiten.

Oh, und vergiss den guten alten Rake nicht :-)

Orion Edwards
quelle
3

Ruby wird auch für Desktop-Anwendungen verwendet. Insbesondere die Verwendung von JRuby zur Entwicklung von Swing-Desktop-Anwendungen.

user23117
quelle
3

Ich habe Ruby bei der Arbeit für verwendet

  • Ein Datenextraktor, der CSV-Dateien aus der Binärausgabe generiert.
  • Ein INI-Dateigenerator, der eine einfache Syntax in ein sich wiederholendes INI-Format umwandelt.
  • Ein einfacher TCP / IP-Server, der beim Testen als Ersatz für das System des Kunden fungiert.
AShelly
quelle
3

Wir verwenden Ruby, um unsere Testautomatisierungssoftware zu implementieren. Dies beinhaltet Testframework und Treibercode für Selenium RC, WATIR und AutoIT.

Ruby ist leistungsstark genug, um umfassende Anwendungen zu erstellen, die mit Testtools wie Selenium oder WATIR verbunden werden können, während gleichzeitig aus Datendateien gelesen, mit einer Remote-Windows-Benutzeroberfläche interagiert und eine nahezu transparente Netzwerkkommunikation durchgeführt wird. Alles unter Windows oder Linux.

Die übersichtliche Syntax macht es ideal für neue und unerfahrene Programmierer zum Lesen. Obwohl es völlig OO ist, ist es für dieselben Programmierer von Anfang an einfach, gute (kürzlich erlernte) OO-Techniken anzuwenden.

Die Flexibilität der Ruby-Syntax erleichtert auch die Verwendung und Erstellung von DSLs erheblich. Dies ermöglicht es weniger technischen Personen, sich zu beteiligen, zu lesen und möglicherweise eigene Tests zu erstellen.

Peter
quelle
Nicht alle Edelsteine ​​laufen unter Fenstern so gut. Nach meiner Erfahrung ist Linux eine viel flüssigere Umgebung, auf der Ruby ausgeführt werden kann.
Zombies
3

Ich habe Ruby zur Codegenerierung von gespeicherten C # - und T-SQL-Prozeduren in einem Projekt mit instabilen Anforderungen verwendet. Das Datenmodell wurde in einer YAML-Datei codiert und .erb-Vorlagen wurden für die Klassen und gespeicherten Prozeduren verwendet. Es ermöglichte auch eine viel trockenere Lösung, als dies mit reinem C # möglich gewesen wäre, da sich wiederholender Code in einer einzigen Methode im Codegenerator herausgerechnet werden konnte.

domgblackwell
quelle
3

Wo ich arbeite, verwenden wir Ruby, um verschiedene einmalige Stapeljobs auszuführen. Ein Beispiel hierfür ist ein Job, der mit dem S3-Dienst von Amazon interagiert. Zu dieser Zeit war die Ruby S3-Bibliothek wahrscheinlich die einfachste, die wir in kurzer Zeit in Betrieb nehmen konnten.

mmacaulay
quelle
3

Ich habe ein Expertensystem für die Auftragsabwicklung geschrieben (siehe auch DSL-Antwort) und 100.000 Zeilen kundenspezifisches Perl in etwa 10.000 Zeilen Ruby-Handling-Dutzende von Kunden konvertiert. Keine Webkomponenten, keine Rails.

mmaibaum
quelle
3

Heh, tolle Frage.

Ich habe Ruby verwendet, um Excel-Tabellen für Flughafeneinrichtungen in SQLite3 für die Android-Telefonplattform zu konvertieren, während ich eine App für Piloten erstellt habe.

DigitalRoss
quelle
3

Ich benutze Ruby mit Sinatra, was viel einfacher ist als Rails. Ich habe Rails verwendet, aber gerade festgestellt, dass es sich zu einem Monster entwickelt hat, obwohl Rails im Vergleich zu für Java verfügbaren Web-Frameworks immer noch erstaunlich ist.

Das Hauptmerkmal von Ruby, das ich jedoch liebe, ist "eval" und "method_missing", die Rails beispielsweise in ActiveRecord verwendet, damit Sie die erstaunlichen "find_by-field-name-" -Abfragen verwenden können.

appshare.co
quelle
3

Ich habe Ruby für viele Back-End-Codes verwendet, einfach weil ich die einzige Person war, die damit beauftragt wurde und eine schöne, saubere Sprache brauchte, die es mir ermöglichte, sehr produktiv zu sein und einfach zu wartenden Code zu schreiben. Ich finde, Ruby erlaubt mir das einfacher als Perl und Python. Die Laufleistung anderer Leute kann davon abweichen, aber es funktioniert gut für mich.

Außerdem gefällt mir, wie Sequel und Nokogiri funktionieren. Ich habe ActiveRecord auch eine Weile getrennt von Rails verwendet.

der Blechmann
quelle
2

Wir verwenden Ruby für die Dateimanipulation, konnten jedoch noch keine Schienen einbauen.

FortunateDuke
quelle
2

Ich habe Ruby viel professionell für schnelle Skripte verwendet, um beispielsweise Dateien zu mischen. Ich bin genauso, dass ich zuerst Ruby verwendet habe, bevor ich Rails überhaupt berührt habe.

Madlep
quelle
2

In Boulder gab es eine ausgezeichnete Gruppe von Ruby-Benutzern, die sich monatlich trafen. Dieser Punkt wurde gemacht - dass Ruby neben seiner Verwendung in Rails eine Existenz hat. Es gibt einfache Ruby-Benutzer, die um Aufmerksamkeit bitten, nette Dinge zu zeigen haben und sich bei Benutzergruppentreffen finden können.

Sie hatten auch eine bessere Pizza als die Python-Gruppe, die sich auch am selben Tag des Monats traf. Kann nur einen auswählen ...

DarenW
quelle
1
Ja, aber die Python-Gruppe hatte besser Py! (lahmer Witz, ich weiß, ich weiß ...)
Dguaraglia
so lustig, ich habe vergessen zu lachen! 8P
DarenW
2

Wir haben zwar mehrere Rails-Apps im Einsatz, verwenden Ruby jedoch auch für einige ziemlich intensive Nicht-Web-Inhalte.

Wir haben einen SMS-Übermittlungsdämon, der Nachrichten aus einer Warteschlange abruft und dann übermittelt, und einen Daemon für die Kreditkartenverarbeitung, den andere Apps aufrufen können, um sicherzustellen, dass es einen zentralen Prüfpfad gibt.

Jon Wood
quelle