¿Laravel o Rails?

Dos de los mejores frameworks para aprender y trabajar. Con ellos podemos hacer desde cosas muy simples hasta complejas.

Voy a explicar las caracteristicas que igualan y diferencian a estos dos, pero quiero recalcar que ambos son muy buenos, decir que uno es mejor que otro es caer en ese viejo intento por resaltar una tecnología sobre otra en base a creencias vacías (y tampoco voy a caer en que lenguaje es mejor que otro, ese tipo de comentarios es de gente super junior que no han madurado)

Recordemos que la selección de tecnología depende de la necesidad que tenemos: Nuestra experiencia sobre la herramienta, los skills de nuestro equipo de trabajo, los alcances en cuanto arquitectura (conocimiento de como hacemos deploy, si debemos invertir en aprender mas cosas o no en base al tiempo, si debemos sacar algo muy rápido y nos sale mejor en una opción u en otra como aws, heroku, un vps o incluso un servidor compartido, la inversión económica que debemos de hacer nosotros o nuestros clientes en base a estas decisiones) entre otros.

Similitudes:

  1. Destinados a desarrollo web
  2. Configurables
  3. Integraciones con librerías externas de forma fácil (mediante composer/ruby gems)
  4. Si creamos una buena arquitectura, podemos escalar sin problemas
  5. Facil integracion con frameworks js (Vue, React, Angular, entre otros)
  6. Podemos usarlos solo para crear APIs
  7. Usan migraciones
  8. Usan ORM (Eloquent / Active Record)
  9. Poseen una interfaz de linea de comandos (Artisan / Rake)
  10. Poseen modelos, controladores.
  11. Las vistas se pueden manejar con lenguajes de plantillas (blade / erb y/o haml) o con html
  12. La configuración de las rutas son entendibles.

Diferencias:

  1. Rails tiene la capacidad de crear un Scaffolding de forma nativa y este a su ves crea en la vista un tipo de archivo adicional: vista.json.jbuilder (aqui configuramos como va responder rails en caso de que solicite una respuesta en json)
  2. Laravel no es MVC por el hecho de que se puede crear una capa superior mediante los repositorios (aquí hacemos las consultas a las bases de datos y organizamos los mismos para luego pasarlos al controlador y enviar la respuesta a la vista) es decir, es mas atómico de forma nativa.
  3. Rails es mas implícito que laravel, es decir, si creamos un método home dentro de un controlador Posts, pero en ese método no tengo nada y a su vez tengo dentro de las views un folder que se llama Posts (igual que el controlador) y un archivo llamado home.html.erb (al igual que el metodo) automáticamente podríamos tener una respuesta html en /home o una respuesta en json en /home.json (así evita que en algún momento exista errores de sistema nada agradables para los usuarios) En laravel este proceso es mas manual, debemos decirle como responde el metodo y a quien.
  4. Rails contiene filtros en los controladores, estos permiten acceder a métodos desde las vistas mediante las peticiones o no, en este caso, podremos solo ver, editar, actualizar o eliminar. (estos filtros se ejecutan antes que todos los procesos, entonces podríamos crear incluso variables globales o procesos globales, algo así como un constructor en laravel)
Rails Filter
Laravel Construct

Creo que estas similitudes y diferencias son la mas relevantes y partiendo de ello concluimos que cada quien tiene su forma de hacer las cosas destinado al mismo objetivo, ya cada quien seleccionara dependiendo de sus necesidades o gustos.