Ruby fuori dai binari


114

A volte sembra che la mia azienda sia l'unica azienda al mondo che utilizza Ruby ma non Ruby on Rails, al punto che Rails è quasi diventato sinonimo di Ruby.

Sono sicuro che questo non è proprio vero, ma sarebbe divertente ascoltare alcune storie sull'utilizzo di Ruby non Rails là fuori.

Risposte:


51

Uno degli enormi vantaggi di Ruby è la capacità di creare DSL molto facilmente. Ruby ti consente di creare "regole di business" in un linguaggio naturale che di solito è abbastanza facile da usare per un analista aziendale. A questo scopo esistono molte app Ruby al di fuori dello sviluppo web.

Consiglio vivamente a Google "ruby dsl" per una lettura eccellente, ma vorrei lasciarvi con un post in particolare. Russ Olsen ha scritto un post sul blog in due parti sui DSL . L'ho visto fare una presentazione sui DSL ed è stata molto bella. Consiglio vivamente di leggere questi post.

Ho anche trovato questa eccellente presentazione su Ruby DSL di Obie Fernandez . Lettura altamente consigliata!


4
Linea di abbonati digitali in Ruby?

5
Lingua specifica del dominio
Sixty4Bit

18

Uso ampiamente Ruby nel mio lavoro e nessuno di questi è basato su Rails (o anche sul web).

Il mio dominio è di solito applicazioni Windows lato client (wxRuby GUI) e script, automatizzando Excel, Internet Explorer, query SQL Server e generazione di report (automazione COM win32ole). Uso anche le librerie sqlite, pdf-writer e gruff per varie attività di elaborazione dati e generazione di grafici.

Il successo di Rails è stato eccezionale per Ruby, ma sono d'accordo che Rails abbia ricevuto così tanta attenzione che il valore di Ruby oltre il web viene spesso trascurato.


17

Siamo principalmente un negozio C ++, ma abbiamo trovato diverse aree in cui Ruby si è dimostrato abbastanza utile. Eccone alcuni:

  • Generazione di codice - Costruito diversi DSL per generare codice C ++ / Java / C # da singoli file di input
  • Crea supporto
    • script per generare Makefile per Unix dai file di progetto di Visual Studio
    • script per la creazione di progetti e la formattazione dell'output per Cruise Control
    • script per l'esecuzione dei nostri unit test e la formattazione dell'output per il controllo della velocità
    • script per la manipolazione di progetti e soluzioni di Visual Studio dalla riga di comando
  • Test di integrazione: possiamo eseguire test molto più rapidamente e in modo più pulito utilizzando Ruby rispetto a C ++
  • L'intera suite di test di QA è scritta in Ruby

Ruby è fondamentalmente il mio strumento di riferimento per dove ha senso. E ha senso in molti posti.


1
Dovresti considerare seriamente l'utilizzo di CMake per generare file di build sia per Unix (Makefiles) che per Windows (Visual Studio).
JesperE

13

Google Sketchup utilizza Ruby come linguaggio di scripting incorporato. Puoi usarlo per eseguire tutti i tipi di modellazione 3D e attività di importazione / esportazione. Lo scripting funziona con la versione gratuita e c'è anche una documentazione decente .


Hm, interessante. Dovrei davvero cercare di avere un po 'di tempo per giocare con Sketchup.
JesperE

9

Ruby con un'estensione homebrew scritta in C ++ fa tutto il pesante pixel che spinge per la mia elaborazione fotografica. Stavo usando Python + numpy ma quando faccio cose artistiche , Ruby è solo più divertente. Anche la relativa mancanza o minore maturità di buone librerie di elaborazione delle immagini mi fa sentire meno come se stessi reinventando le ruote. Non ho idea di Rails, a parte il fatto che ne ho sentito parlare, ho un'idea confusa di cosa sia e in realtà ho un libro su di esso (non aperto)


8

Usiamo Watir (libreria Ruby) per testare la nostra applicazione web .net.


Watir è estremamente utile. Usiamo anche il selenio a volte attraverso Ruby.
Swanand

7

Dai un'occhiata a Shoes , una semplice API per la creazione di GUI in Ruby destinata ai programmatori inesperti.



6

RubyCocoa e MacRuby. È possibile creare app GUI complete basate su Cocoa senza Rails. E poi puoi usare anche Interface Builder.


6

L'anno scorso ho lavorato a un progetto museale che utilizzava molto Ruby. ( http: // http: //ourspace.tepapa.com/home )

La parte su cui ho trascorso la maggior parte del mio tempo è stata una mappa interattiva. La mappa sul pavimento è dotata di sensori, quindi quando le persone camminano su di essa si attivano le luci e le visualizzazioni sul muro mostrano immagini o video e vengono riprodotte tracce audio.

Tutto il codice di controllo per questa parte della mostra è rubino. Ho scritto interfacce C con ruby ​​wrapper per comunicare con i sensori del pavimento e i controller dell'illuminazione. Il sistema interroga un database MYSQL per i file multimediali da visualizzare e quindi dice ai computer nei muri di riprodurre i media tramite UDP.

È la parte più affidabile dell'intera mostra.

Ruby è stato utilizzato per l'altra parte importante della mostra, il Muro anche se non ho avuto molto a che fare con quello. La maggior parte della grafica è stata prototipata in ruby ​​utilizzando interfacce per OpenGL, un po 'di Cocoa e una libreria di fisica prima di essere convertita in Obj-C puro.


6

Puppet and Chef: DevOps

Non ho visto una menzione di Puppet o Chef nelle 30 risposte che hanno preceduto il mio arrivo. Ruby sembra dominare il lavoro corrente nell'automazione del cloud ed è la base, l'estensione e il linguaggio di creazione dei modelli di questi due grandi attori. Vengono utilizzati principalmente per distribuire informazioni sulla configurazione del sistema e dell'applicazione per gli array di server e per la gestione generale delle workstation IT.

Il campo DevOps è abbastanza consapevole di Ruby. Oggi Perl ha un concorrente. Anche se spesso uno script molto semplice può ancora essere scritto direttamente per sh(1),un'attività complessa, ora potrebbe essere fatto in Ruby piuttosto che in Perl.


5

L'unico sito che ho fatto con Ruby al lavoro è usare Rails, ma mi piacerebbe provare Merb .

Oltre a questo, eseguo molti piccoli programmi di utilità in Ruby, ad esempio un'app che legge i feed RSS e importa nuovi post in un database.

È divertente, quindi scrivo anche cose stupide solo perché è così veloce. Ieri ho scritto 100.000 volte un'app per riprodurre il problema di Monty Hall per aiutare un'amica a convincere il suo professore che cambiare è la strategia corretta.


1
ehi, il professore dovrebbe essere in grado di capire la logica pura dietro questo gioco, non c'è bisogno di simulazioni lì.
vava

Sarei interessato a vedere il tuo algoritmo.
maček

Se ho capito bene, Merb è stata praticamente assorbita - o almeno fertilizzata in modo incrociato, o come vuoi chiamarla - in Rails 3.
Andy

4

Quasi mi offendo che il rubino sia una cosa da binari. È come ai tempi in cui la CGI era l'ultima tendenza e tutti pensavano che se conoscessi perl dovresti farlo solo perché hai programmato app CGI. Ruby è solo un linguaggio di scripting per me, sebbene non sia maturo come Python, quindi mi dispiace un po 'di dover saltare attraverso alcuni dei suoi cerchi e modifiche recenti, mi piace ancora e lo uso. Anche se lavoro in un negozio Java e quindi Groovy è la scelta ideale per un linguaggio di scripting, uso comunque ruby ​​a casa e per gli script che non è necessario condividere al lavoro.

Stavo pensando di entrare in RoR da tutto il brusio e da quanto sia veloce / semplice, ma dopo aver guardato i binari non ho visto nulla di straordinario o anche il meno innovativo o rapidamente veloce nel suo sviluppo rispetto a qualsiasi altro struttura. L'unico vantaggio che ho visto è stato che potevo programmare in ruby, il che sarebbe bello, ma l'installazione iniziale, la manutenzione del server e il ridimensionamento sono più difficili, compensando così il piacere di codificare in ruby.


4

Ho creato una presentazione - chiamata per coincidenza Off The Rails - per discutere delle applicazioni web basate su rack:

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

Il repository git include diapositive in formato Markdown e codice di esempio (sotto forma di applicazioni e middleware in esecuzione). Ecco l'abstract:

Ruby on Rails è il framework per applicazioni web più popolare per Ruby. Ma non è l'unico! Se pensi che Rails sia troppo grande, o troppo supponente, o troppo qualunque cosa, potresti essere felice di conoscere la nuova generazione di cosiddetti microframework costruiti su Rack. E poiché Rails 3 è di per sé un'app Rack, non devi rinunciare a Rails per ottenere i vantaggi delle rotte Sinatra o delle API Grape.

Ed ecco alcuni riferimenti:

Spero che lo trovi utile!


4

Sono principalmente uno sviluppatore Web e ho imparato a usare Ruby a usare Rails, ma mi piace così tanto il linguaggio che ho iniziato a sviluppare un'applicazione desktop Swing in Ruby, usando JRuby e Monkeybars. Sono competente in Java, ma non mi piace usarlo, e l'API Swing è orribile, quindi mettere Ruby in cima è stata una grande vittoria.


3

Utilizziamo principalmente rails, ma abbiamo molte altre cose ruby ​​non rails, ad esempio un demone di autenticazione autonomo per l'autenticazione centralizzata degli utenti e un "server di elaborazione delle immagini" che esegue un numero arbitrario di processi ruby ​​per elaborare le immagini in parallelo.

Oh, e non dimenticare il buon vecchio Rake :-)


3

Ruby è utilizzato anche per l'applicazione Desktop. Soprattutto l'uso di JRuby per sviluppare l'applicazione desktop Swing.


3

Ho usato Ruby al lavoro per

  • Un estrattore di dati, che genera file CSV dall'output binario.
  • Un generatore di file .ini, che trasforma una semplice sintassi in un formato .ini ripetitivo.
  • Un semplice server TCP / IP, che funge da sostituto del sistema del cliente durante il test.

3

Usiamo Ruby per implementare il nostro software di automazione dei test. Ciò include framework di test e codice driver per Selenium RC, WATIR e AutoIT.

Ruby è abbastanza potente da creare applicazioni complete in grado di interfacciarsi con strumenti di test come Selenium o WATIR, mentre allo stesso tempo legge da file di dati, interagisce con un'interfaccia utente Windows remota ed esegue comunicazioni di rete quasi trasparenti. Tutto mentre gira su Windows o Linux.

La sintassi ordinata lo rende ideale per i programmatori nuovi e inesperti da leggere. Sebbene la sua natura totalmente OO renda facile per questi stessi programmatori applicare fin dall'inizio buone tecniche OO (apprese di recente).

La natura flessibile della sintassi di Ruby rende anche molto più facile l'uso e la creazione di DSL. Ciò consente alle persone meno tecniche di essere invitate, leggere ed eventualmente creare test propri.


Non tutte le gemme funzionano così bene su Windows. Linux è un ambiente molto più fluido su cui eseguire Ruby secondo la mia esperienza.
Zombies

3

Ho usato Ruby per la generazione di codice di stored procedure C # e T-SQL in un progetto con requisiti instabili. Il modello di dati è stato codificato in un file YAML e sono stati utilizzati modelli .erb per le classi e le procedure memorizzate. Ha anche consentito una soluzione molto più DRY di quanto sarebbe stato possibile con un semplice C # poiché il codice ripetitivo poteva essere scomposto in un unico metodo nel generatore di codice.


3

Dove lavoro, usiamo Ruby per eseguire diversi lavori batch di tipo unico. Un esempio è un lavoro che interagisce con il servizio S3 di Amazon. A quel tempo, la libreria Ruby S3 era probabilmente la più semplice in circolazione per noi da installare e funzionare in un breve lasso di tempo.


3

Ho scritto un sistema esperto di elaborazione degli ordini (vedi anche la risposta DSL), convertito 100.000 linee di perl specifico per il cliente in circa 10.000 linee di ruby ​​che gestiscono dozzine di clienti. Nessun componente web, nessun Rails.



3

Eh, bella domanda.

Ho usato Ruby per convertire i dati della struttura aeroportuale del foglio di calcolo Excel in sqlite3 per la piattaforma del telefono Android mentre creavo un'app per i piloti.


3

Uso Ruby con Sinatra, che è molto più semplice di Rails. Ho usato Rails ma ho appena scoperto che si è trasformato in un mostro, sebbene Rails sia ancora sorprendente rispetto ai framework web disponibili per Java.

La caratteristica principale di Ruby che adoro, tuttavia, sono "eval" e "method_missing", che Rails utilizza effettivamente per esempio in ActiveRecord in modo da poter utilizzare le sorprendenti query "find_by-field-name-".


3

Ho usato Ruby per molto codice back-end semplicemente perché ero l'unica persona incaricata di farlo e avevo bisogno di un bel linguaggio pulito che mi permettesse di essere molto produttivo e scrivere codice facile da mantenere. Trovo che Ruby mi permetta di farlo più facilmente di Perl e Python. Il chilometraggio di altre persone potrebbe variare da quello ma funziona bene per me.

Oltre a questo, mi piace come funzionano Sequel e Nokogiri. Ho anche usato ActiveRecord per un po 'separatamente da Rails.


2

Usiamo un po 'di Ruby per la manipolazione dei file ma non siamo ancora stati in grado di incorporare rails.


2

Ho usato Ruby molto professionalmente per script veloci per cose come lo shuffling dei file. Sono nello stesso modo in cui stavo usando Ruby prima di toccare Rails.


2

A Boulder c'era un ottimo gruppo di utenti Ruby che si incontrava mensilmente. Questo punto è stato chiarito: che Ruby ha un'esistenza oltre al suo utilizzo in Rails. Gli utenti semplici di Ruby esistono, chiedono attenzione, hanno cose belle da mostrare e possono trovarsi alle riunioni del gruppo di utenti.

Avevano anche una pizza migliore del gruppo Python, che si incontrava anche lo stesso giorno del mese. Posso sceglierne solo uno ...


1
Sì, ma il gruppo Python ha fatto meglio a Py! (scherzo zoppo, lo so, lo so ...)
dguaraglia

così divertente che mi sono dimenticato di ridere! 8P
DarenW,

2

Sebbene abbiamo diverse app Rails al lavoro, usiamo anche Ruby per alcune cose non web piuttosto intense.

Abbiamo un demone di consegna SMS, che estrae i messaggi da una coda e poi li consegna, e un demone di elaborazione della carta di credito a cui altre app possono chiamare, il che garantisce che ci sia un audit trail centrale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.