¿Qué significa que un lenguaje de programación sea "on rails"?


Actualmente estoy trabajando con Groovy y Grails. Mientras Groovy es bastante sencillo ya que es básicamente Java, no puedo decir que grok Grails. Leí que Groovy es a Grails como Ruby es a Ruby on Rails, pero ¿qué significa eso?

Author: hippietrail, 2008-10-08

11 answers

Para abordar su confusión con la metáfora (aunque ha sido contestada en otras palabras bajo su pregunta):

Groovy es a Grails como Ruby es a Ruby on Rails, pero ¿qué significa eso?

Grails fue un framework web construido sobre/con el lenguaje de programación Groovy para hacer lo mismo para Groovy que Rails (un framework web para Ruby) hace para Ruby.


¿Qué significa estar "sobre raíles"?

La respuesta a esto se reduce a la esencia de estas web marco.

Estos marcos web (Grails & Rails) se basan en la premisa de "convención sobre configuración", lo que significa que el uso de convenciones comunes para desarrollar aplicaciones web puede conducir a una mayor productividad y aplicaciones más mantenibles (esta es una generalización bruta). Y al definir una convención y apegarse a ella, encontrará que sus aplicaciones son fáciles de generar y rápidas de poner en marcha.

Esto es lo que significa para mí estar "sobre raíles", solo como un tren. Cuando se desarrolla una nueva ruta de tren no hay que preocuparse por reinventar la forma en que el tren llegará de un lugar a otro, se ha resuelto por una sola convención durante décadas: los rieles. Al igual que las vías en una ruta de tren limitan su camino desde dos ubicaciones, los marcos web basados en convenciones utilizan convenciones para la flexibilidad de los desarrolladores de aplicaciones para que puedan concentrarse en cuál es el problema comercial esencial de su aplicación.

Un beneficio clave de a la convención para un marco web es que el marco web ahora puede hacer suposiciones sobre cómo ciertas capas de la aplicación se enganchan. En Rails, normalmente se puede asumir que si la tabla de una base de datos tiene un nombre plural, la clase ActiveRecord asignada a esa tabla tendrá el nombre singular correspondiente. En consecuencia, los generadores de código Rails pueden consumir la información de mapeo de datos para generar código de acceso a datos como buscadores dinámicos, migraciones, traversales de asociación de carga lenta, etc. Este el código de acceso a datos en un marco basado en la configuración es laborioso para codificar a mano.

 39
Author: codeLes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-09 13:50:16

Varias personas han mencionado los aspectos técnicos de lo que hace que Rails/Grails sean lo que son. Varias personas también han mencionado la " convención sobre la configuración "como" rails " en Rails/Grails. Esto se está acercando a la verdad. Pero esta es solo una característica de la filosofía más amplia de los Rieles, que es el concepto de software de opinión.

El software obstinado no se puede describir solo en términos técnicos; es una filosofía; un ethos; un actitud. Me gusta o lo odio, eso es lo que está en el corazón de Rails.

Aquí está un exceprt de una entrevista de 2005 con David Heinemeier Hansson , creador de Rails:

Rails es un software de opinión. Evita colocar los viejos ideales del software en una posición primaria. Uno de esos ideales es la flexibilidad-la noción de que debemos tratar de acomodar tantos enfoques como sea posible, que no debemos juzgar una forma de desarrollo sobre otro. Bueno, Rails sí, y creo que por eso funciona.

Con Rails, usted negocia flexibilidad a nivel de infraestructura para ganar flexibilidad a nivel de aplicación. Si estás feliz de trabajar por el camino dorado que he incrustado en Rails, obtienes una inmensa recompensa en términos de productividad que te permite hacer más, antes y mejor a nivel de aplicación.

También Hay una entrevista posterior, que más explora la sujeto.

Así que estar 'sobre raíles' es una metáfora para ser 'obstinado', por lo que se nombra como es. Eso y el hecho de que "Ruby on Rails" es alliteratve, que cualquier periodista o escritor le dirá, es una forma segura de enganchar la atención de la gente.

 14
Author: Charles Roper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-09 14:37:41

Creo que un framework que se esfuerza por ser "similar a rails" se refiere a varias cosas:

  • Nivel de modelo: un AR con patrón AR (en lugar de datamapper), migraciones o algún esquema automatizado y gestión de la capa de modelo, manejo de claves foráneas en la aplicación (no en el esquema de base de datos, y también sin usar procedimientos almacenados o lógica DBMS pura)

  • TDD alentado: esqueletos generados automáticamente para pruebas unitarias,

  • Conexión de convenciones de nomenclatura nombres de tablas de base de datos y nombres de modelos, acciones de controladores y vistas y plantillas HTML

  • Esquema simplificado de reconocimiento y generación de rutas

  • Énfasis en la arquitectura REST

  • Integración con ajax libs: RJS, prototype y scriptaculous

 8
Author: Gene T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-11 01:15:07

Rails es un framework para el desarrollo de aplicaciones web con un back-end de base de datos. Creo que el nombre originalmente era un juego de palabras. Un tren puede llevarte a algún lugar realmente rápido, pero solo a donde van los rieles.

 7
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 15:50:43

Estar sobre raíles significa que no puedes controlar a dónde vas. Significa que solo se puede ir donde se han colocado los rieles. Cualquier intento de ir a donde la gente que colocó los rieles no anticipó que fueras conducirá a la frustración.

 4
Author: Kibbee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-11 01:11:13

Es una expresión automotriz. Cuando un automóvil se maneja excepcionalmente bien, se dice que" se curva como conducir sobre rieles " (es decir, le brinda un excelente control).

No se si ahí es donde la gente de rails obtuvo ese nombre, pero así es como lo interpreté.

 1
Author: Ferruccio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 15:52:37

Respuesta muy corta y sencilla: Convención sobre configuración.

 1
Author: Christoph Schiessl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 18:38:29

Como se ha dicho anteriormente, Rails y Grails proporcionan convenciones para el desarrollo de aplicaciones web naming nombrando sus piezas de una manera determinada y poniéndolas en los lugares correctos, su aplicación funcionará de forma predeterminada sin configuración adicional. Cuando desee desviarse de la convención, puede configurar su camino allí.

 1
Author: John Flinchbaugh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 20:49:50

Ruby y Groovy son lenguajes.

Ruby on Rails es un marco de aplicación web innovador. Ver excelentes respuestas en el software opinionated arriba.

Como cuestión de historia, un título provisional para un framework de aplicaciones web Groovy fue Groovy on Rails. Sin embargo, la comunidad RoR se opuso. El equipo eligió Grails en su lugar.

 1
Author: Michael Easter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-05 18:00:53

Es una metáfora, y casi me dicen que necesita explicación. De todos modos, es una muy buena metáfora de lo que Ruby on Rails hace. Hace que sea extremadamente fácil hacer (ir a) las cosas comunes, es decir, pruebas, validación, implementación, MVC.

 0
Author: MattW.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 15:56:54

No estoy de acuerdo con los otros comentarios de "on rails es una filosofía sobre la convención sobre la configuración" y así sucesivamente.

Mientras que rails se adhiere a esas filosofías, "Ruby on Rails" es el nombre de un framework web. Nada más, nada menos. No se refiere a ninguna "on-railsness" específica al respecto, es solo un nombre de marca de la misma manera que McDonald's es un nombre de marca.

Si alguien escribe otro framework y lo llama "Python on Rails", entonces habrá otra marca nombre. Si no, "XYZ on rails" solo significa que la gente está siendo confundida.

 0
Author: Orion Edwards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-09 19:37:34