Ruby fuera de los rieles


114

A veces siento que mi empresa es la única empresa del mundo que usa Ruby pero no Ruby on Rails, hasta el punto de que Rails casi se ha convertido en sinónimo de Ruby.

Estoy seguro de que esto no es realmente cierto, pero sería divertido escuchar algunas historias sobre el uso de Ruby que no es de Rails.

Respuestas:


51

Uno de los grandes beneficios de Ruby es la capacidad de crear DSL muy fácilmente. Ruby le permite crear "reglas comerciales" en un lenguaje natural que suele ser bastante fácil de usar para un analista comercial. Existen muchas aplicaciones de Ruby fuera del desarrollo web para este propósito.

Recomiendo encarecidamente buscar en Google "ruby dsl" para obtener una lectura excelente, pero me gustaría dejarles una publicación en particular. Russ Olsen escribió una publicación de blog de dos partes sobre DSL . Lo vi dar una presentación sobre DSL y fue muy buena. Recomiendo mucho leer estas publicaciones.

También encontré esta excelente presentación sobre Ruby DSL de Obie Fernandez . ¡Lectura muy recomendable!


4
¿Línea de suscriptor digital en Ruby?

5
Lenguaje específico de dominio
Sixty4Bit

18

Utilizo Ruby ampliamente en mi trabajo, y ninguno de ellos está basado en Rails (o incluso en la web).

Mi dominio suele ser aplicaciones de Windows del lado del cliente (wxRuby GUI) y scripts, que automatizan las consultas de Excel, Internet Explorer, SQL Server y la generación de informes (automatización COM win32ole). También utilizo las bibliotecas sqlite, pdf-writer y gruff para diversas tareas de generación de gráficos y manipulación de datos.

El éxito de Rails ha sido excelente para Ruby, pero estoy de acuerdo en que Rails ha recibido tanta atención que el valor de Ruby más allá de la web a menudo se pasa por alto.


17

Somos principalmente una tienda de C ++, pero hemos encontrado varias áreas en las que Ruby ha demostrado ser bastante útil. A continuación, presentamos algunos:

  • Generación de código: construyó varios DSL para generar código C ++ / Java / C # a partir de archivos de entrada únicos
  • Construir soporte
    • scripts para generar Makefiles para unix desde Visual Studio Project Files
    • scripts para construir proyectos y formatear la salida para Cruise Control
    • scripts para ejecutar nuestras pruebas unitarias y formatear la salida para el control de crucero
    • scripts para manipular proyectos y soluciones de Visual Studio desde la línea de comandos
  • Pruebas de integración: podemos realizar pruebas de manera mucho más rápida y limpia con Ruby que con C ++
  • Todo el conjunto de pruebas de QA está escrito en Ruby

Ruby es básicamente mi herramienta para ir a donde tiene sentido. Y tiene sentido en muchos lugares.


1
Debería considerar seriamente el uso de CMake para generar archivos de compilación tanto para Unix (Makefiles) como para Windows (Visual Studio).
JesperE

13

Google Sketchup utiliza Ruby como lenguaje de secuencias de comandos integrado. Puede usarlo para realizar todo tipo de modelado 3D y tareas de importación / exportación. El script funciona con la versión gratuita e incluso hay documentación decente .


Hm, interesante. Realmente debería intentar conseguir algo de tiempo para jugar con Sketchup.
JesperE

9

Ruby con una extensión casera escrita en C ++ hace todo el esfuerzo de píxeles para el procesamiento de mi fotografía. Estaba usando Python + numpy, pero cuando hago cosas artísticas , Ruby es más divertido. Además, la relativa falta o menor madurez de buenas bibliotecas de procesamiento de imágenes me hace sentir menos como si estuviera reinventando ruedas. No tengo ni idea de Rails, aparte de que he oído hablar de él, tengo una idea vaga de lo que es y, de hecho, tengo un libro sobre él (sin abrir)


8

Usamos Watir (biblioteca Ruby) para probar nuestra aplicación web .net.


Watir es extremadamente útil. También usamos selenio a veces a través de Ruby.
Swanand

7

Eche un vistazo a Shoes , una API simple para crear GUI en Ruby dirigida a programadores novatos.



6

RubyCocoa y MacRuby. Es posible crear aplicaciones GUI completas basadas en Cocoa sin Rails. Y luego también puede usar Interface Builder.


6

Trabajé en un proyecto de museo el año pasado que usaba mucho Ruby. ( http: // http: //ourspace.tepapa.com/home )

La parte en la que pasé la mayor parte de mi tiempo fue un mapa de piso interactivo. El mapa en el piso tiene sensores, por lo que cuando la gente camina sobre él se encienden las luces y las pantallas en la pared muestran imágenes o videos y se reproducen pistas de audio.

Todo el código de control para esta parte de la exhibición es ruby. Escribí interfaces C con envoltorios ruby ​​para comunicarme con los sensores del piso y los controladores de iluminación. El sistema consulta una base de datos MYSQL para ver los archivos multimedia que se mostrarán y luego le dice a las computadoras en las paredes que reproduzcan los archivos multimedia a través de UDP.

Es la parte más confiable de toda la exhibición.

Ruby se usó para la otra parte principal de la exhibición, el Muro, aunque no tuve mucho que ver con eso. La mayoría de los gráficos fueron prototipados en ruby ​​usando interfaces a OpenGL, un poco de Cocoa y una biblioteca de física antes de ser portados a Obj-C puro.


6

Marioneta y chef: DevOps

No vi una mención de Puppet o Chef en las 30 respuestas que precedieron a mi llegada. Ruby parece dominar el trabajo actual en la automatización de la nube y es la base, la extensión y el lenguaje de creación de plantillas de estos dos grandes jugadores. Se utilizan principalmente para distribuir información de configuración de aplicaciones y sistemas para matrices de servidores y para la gestión general de estaciones de trabajo de TI.

El campo DevOps es bastante compatible con Ruby. Hoy, Perl tiene un competidor. Si bien un script realmente simple a menudo puede escribirse directamente para sh(1),una tarea compleja, ahora se puede hacer en Ruby en lugar de Perl.


5

El único sitio que he hecho con Ruby en el trabajo está usando Rails, pero me gustaría probar Merb .

Aparte de eso, hago muchos pequeños programas de utilidad en Ruby, por ejemplo, una aplicación que lee feeds RSS e importa nuevas publicaciones en una base de datos.

Es divertido, así que también escribo algunas cosas tontas solo porque es muy rápido. Ayer escribí una aplicación para jugar el problema de Monty Hall 100.000 veces para ayudar a una amiga a convencer a su profesor de que cambiar es la estrategia correcta.


1
oye, el profesor debería poder entender la lógica pura detrás de este juego, no hay necesidad de simulaciones allí.
vava

Me interesaría ver tu algoritmo.
maček

Si lo entiendo correctamente, Merb ha sido prácticamente absorbido, o al menos fertilizado cruzado, o como quieras llamarlo, en Rails 3.
Andy

4

Casi me insulta que el rubí es una cosa de rieles. Es como cuando CGI era la última tendencia y todo el mundo pensaba que si conocía Perl, debía hacerlo solo porque programaba aplicaciones CGI. Ruby es solo un lenguaje de scripting para mí, aunque no tan maduro como Python, así que lamento un poco tener que pasar por algunos de sus obstáculos y cambios recientes, todavía me gusta y lo uso. Aunque trabajo en una tienda de Java y, por lo tanto, groovy es la opción ideal para un lenguaje de scripting, sigo usando ruby ​​en casa y para tirar scripts que no es necesario compartir en el trabajo.

Estaba considerando entrar en RoR por todos los rumores y lo rápido / simple que es, pero después de mirar por encima de los rieles no vi nada en absoluto que fuera sorprendente o incluso un poco innovador o rápido sobre su desarrollo en comparación con cualquier otro. marco de referencia. El único beneficio que vi fue que podía codificar en ruby, lo cual sería bueno, pero la configuración inicial, el mantenimiento del servidor y el escalado son más difíciles, compensando así el placer de codificar en ruby.


4

Creé una presentación, que coincidentemente se llamó Off The Rails, para discutir las aplicaciones web basadas en Rack:

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

El repositorio de git incluye diapositivas en formato Markdown y código de muestra (en forma de aplicaciones en ejecución y middleware). Aquí está el resumen:

Ruby on Rails es el marco de aplicación web más popular para Ruby. ¡Pero no es el único! Si cree que Rails es demasiado grande, demasiado obstinado o demasiado, es posible que le guste conocer la nueva generación de los llamados microframeworks integrados en Rack. Y dado que Rails 3 es en sí misma una aplicación Rack, no tienes que renunciar a Rails para beneficiarte de las rutas de Sinatra o las API de Grape.

Y aquí algunas referencias:

¡Esperamos que te sea útil!


4

Soy principalmente un desarrollador web y aprendí Ruby a usar Rails, pero me gusta tanto el lenguaje que comencé a desarrollar una aplicación Swing de escritorio en Ruby, usando JRuby y Monkeybars. Soy competente en Java, pero no me gusta mucho usarlo, y la API Swing es horrible, por lo que poner a Ruby en la cima ha sido una gran victoria.


3

Usamos principalmente rieles, pero tenemos muchas otras cosas ruby ​​que no son rieles, por ejemplo, un demonio de autenticación independiente para la autenticación centralizada de usuarios y un 'servidor de procesamiento de imágenes' que ejecuta números arbitrarios de procesos ruby ​​para procesar imágenes en paralelo.

Ah, y no te olvides del viejo Rake :-)


3

Ruby también se utiliza para aplicaciones de escritorio. Especialmente el uso de JRuby para desarrollar la aplicación de escritorio Swing.


3

He usado Ruby en el trabajo para

  • Un extractor de datos que genera archivos csv a partir de una salida binaria.
  • Un generador de archivos .ini, que convierte una sintaxis simple en un formato .ini repetitivo.
  • Un servidor TCP / IP simple, que actúa como sustituto del sistema del cliente durante la prueba.

3

Usamos Ruby para implementar nuestro software de automatización de pruebas. Esto incluye el marco de prueba y el código del controlador para Selenium RC, WATIR y AutoIT.

Ruby es lo suficientemente potente como para crear aplicaciones integrales que pueden interactuar con herramientas de prueba como Selenium o WATIR, mientras que al mismo tiempo lee archivos de datos, interactúa con una interfaz de usuario de Windows remota y realiza una comunicación de red casi transparente. Todo mientras se ejecuta en Windows o Linux.

La sintaxis ordenada lo hace ideal para que lo lean los programadores nuevos e inexpertos. Si bien su naturaleza totalmente orientada a objetos facilita que estos mismos programadores apliquen buenas técnicas orientadas a objetos (aprendidas recientemente) desde el principio.

La naturaleza flexible de la sintaxis de Ruby también facilita mucho el uso y la creación de DSL. Esto permite que las personas menos técnicas se involucren, lean y posiblemente creen sus propias pruebas.


No todas las gemas funcionan tan bien en Windows. Linux es un entorno mucho más fluido para ejecutar Ruby en mi experiencia.
Zombies

3

He usado Ruby para la generación de código de procedimientos almacenados C # y T-SQL en un proyecto con requisitos inestables. El modelo de datos se codificó en un archivo YAML y se utilizaron plantillas .erb para las clases y los procedimientos almacenados. También permitió una solución mucho más DRY de lo que hubiera sido posible con C # directo, ya que el código repetitivo podría factorizarse en un solo método en el generador de código.


3

Donde trabajo, utilizamos Ruby para hacer una serie de diferentes trabajos por lotes de tipo único. Un ejemplo de eso es un trabajo que interactúa con el servicio S3 de Amazon. En ese momento, la biblioteca Ruby S3 era probablemente la más fácil de poner en funcionamiento en poco tiempo.


3

Escribí un sistema experto en procesamiento de pedidos (ver también la respuesta DSL), convertí 100 mil líneas de perl específico del cliente en aproximadamente 10 mil líneas de rubí que manejaban docenas de clientes. Sin componentes web en absoluto, sin raíles.



3

Je, gran pregunta.

Utilicé Ruby para convertir los datos de las instalaciones del aeropuerto en una hoja de cálculo de Excel a sqlite3 para la plataforma de teléfono Android mientras creaba una aplicación para pilotos.


3

Utilizo Ruby con Sinatra, que es mucho más simple que Rails. Usé Rails, pero descubrí que se ha convertido en un monstruo, aunque Rails sigue siendo sorprendente en comparación con los marcos web disponibles para Java.

Sin embargo, la característica principal de Ruby que me encanta es "eval" y "method_missing", que Rails realmente usa, por ejemplo, en ActiveRecord para que puedas usar las increíbles consultas "find_by-field-name-".


3

Usé Ruby para una gran cantidad de código de back-end simplemente porque era la única persona que tenía la tarea de hacerlo y necesitaba un lenguaje limpio y agradable que me permitiera ser muy productivo y escribir código fácil de mantener. Encuentro que Ruby me permite hacerlo más fácilmente que Perl y Python. El kilometraje de otras personas puede variar en eso, pero a mí me funciona bien.

Además de eso, me gusta cómo funcionan Sequel y Nokogiri. También usé ActiveRecord durante un tiempo por separado de Rails.


2

Usamos algo de Ruby para la manipulación de archivos, pero aún no hemos podido incorporar rieles.


2

He usado Ruby con mucha profesionalidad para scripts rápidos para cosas como mezclar archivos. Soy de la misma manera en que estaba usando Ruby primero antes de tocar Rails.


2

En Boulder había un excelente grupo de usuarios de Ruby que se reunían mensualmente. Se señaló este punto: que Ruby tiene una existencia además de su uso en Rails. Los usuarios simples de Ruby existen, están pidiendo atención, tienen cosas interesantes que mostrar y pueden encontrarse en reuniones de grupos de usuarios.

También tenían mejor pizza que el grupo Python, que se reunía también el mismo día del mes. Solo puedo elegir uno ...


1
¡Sí, pero el grupo Python tenía mejor Py! (broma
tonta

¡tan gracioso que me olvidé de reír! 8P
DarenW

2

Si bien tenemos varias aplicaciones de Rails en funcionamiento, también usamos Ruby para algunas cosas bastante intensivas que no son de la web.

Tenemos un demonio de entrega de SMS, que extrae mensajes de una cola y luego los entrega, y un demonio de procesamiento de tarjetas de crédito al que otras aplicaciones pueden llamar, lo que garantiza que haya una pista de auditoría central.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.