¿Cómo es cambiar de PHP a Ruby?

Es más productivo y mucho menos doloroso para los desarrolladores.

Tuve este escenario hace unos 14 meses con Stylitics, que es donde he estado trabajando durante los últimos años hasta que abandoné hace dos semanas para ir a la escuela.

Fui el primer empleado técnico de la startup, así que elegimos lo que sabía mejor, y era PHP en ese momento, tenía algo de experiencia con CodeIgniter, pero decidimos optar por CakePHP porque estaba más orientado a MVC (léase: “Railsy “), desarrollamos una versión funcional de nuestro producto, era un diseño y características bastante buenos, utilizamos Git desde el primer día, pero aún fue difícil trabajar con él, tuve que hacer volcados de la base de datos en el servidor y descargarlos manualmente, y aparte de la funcionalidad que CakePHP ofrecía, estaba solo cuando necesitaba implementar una nueva característica, algo tan simple como exportar un conjunto de datos a CSV me llevaría fácilmente un día o, a veces, más, la codificación en PHP solo lleva más tiempo .

Luego, decidimos cambiar a Ruby on Rails, tuvimos el lujo de tirar todo y comenzar de cero, trajimos a otro desarrollador y comenzamos a martillar las historias de Pivotal Tracker como si no hubiera un mañana. Usamos Heroku, por lo que el despliegue siempre fue muy fácil , pudimos mantener varias versiones de la aplicación usando diferentes instancias de Heroku, y redujimos la escritura de código al mínimo usando las gemas maravillosas que la comunidad sigue proporcionando. Es mucho más productivo escribir código ruby, también mucho mejor aspecto.

En el lado del marco de las cosas, CakePHP estaba tratando tanto de ser PHP en Rails, pero no es posible construir Rails en ningún otro idioma, Rails es en gran medida el producto de Ruby, depende en gran medida de las características que Ruby tenga, de los cuales la meta programación parece ser la más importante que PHP simplemente carece.

Dos años después, realmente no puedo verme volver a PHP, me encanta la forma de OOP de Ruby, me encanta la buena sintaxis, odio los puntos y comas, y realmente no quiero perder mi tiempo con mysql_real_escape_string () nunca más .

Cambio entre usar Ruby y PHP dependiendo del proyecto, y los dos no son nada parecidos, es un gran cambio de paradigma pasar de un lenguaje de procedimientos en gran medida a un lenguaje puro orientado a objetos, y de las comunidades de Ruby on Rails he visto algunos La frustración de que los antiguos programadores de PHP transmitan hábitos de procedimiento a Ruby, que realmente no encajan, aunque Ruby es lo suficientemente flexible como para permitirlo. Esas malas prácticas generalmente hacen que el código sea difícil de ampliar más adelante.
Hablando por mí mismo, todavía no me he sentido cómodo con Ruby OO pensando.

Si tiene tiempo para experimentar y superar sus viejos hábitos, podría hacer un cambio, pero incluso entonces su código podría estar “infectado” por PHP.

En estos días, no muy diferente. Laravel o symfony2, elija su elección. Laravel es más como rails … metaprogramación en php usando fachadas para proporcionar una API realmente expresiva y fácil de usar, y symfony2 es más “teóricamente correcto” y, por lo tanto, más detallado.

Symfony 2 es más maduro que laravel, por lo que tiene la mayoría de las convenciones (si no todas) configuradas para manejar sus tareas diarias de desarrollo web. Por lo tanto, no se encontrará “necesitando” rieles en ningún momento.

Sin embargo, Laravel te permitiría ser más rápido. Y a medida que crece, la mayoría de las tareas estándar de desarrollo web se están abordando bastante bien (Taylor es un genio). Entonces sí … para desarrolladores web, php y ruby ​​son bastante similares. Para otras tareas, elegiría js (nodo) o python sobre ruby ​​o php, ya que me gusta mucho más el módulo de archivo / carpeta <->

He trabajado en ambos entornos (pero no cambié de uno a otro), solo mucha experiencia.

Ruby es genial : aprendí el idioma y corrí con él. Si tenía que hacer algo, casi siempre había una “gema” ya creada para hacerlo.
Ruby es irritante: si necesita algo que requiere pensar o hacer algo donde no exista una “gema” para conectarse, los desarrolladores de Ruby (con los que trabajé) simplemente me miraron como mi perro me mira: “No” No sé lo que estás diciendo, pero te amo “.

PHP es genial : aprendí el lenguaje y corrí con él. Si necesitaba hacer algo casi siempre había una biblioteca que podía obtener con Composer.
PHP es horrible : el manejo de errores y excepciones es uno de los peores que he visto en cualquier lenguaje. ¿Qué quieres decir con intentar … captura no detecta errores? Solo excepciones, pero no errores?!?!? ¿¿Cuál es la diferencia?? Aparentemente, esa es una decisión arbitraria tomada por el equipo interno de PHP. (Quiero que el karma en todo su esplendor se inflija en el equipo interno)

Me cambié de PHP a Ruby (en Rails), eso es lo que concluí:

Las cosas buenas:
– no tienes que usar “;” o “()” todo el tiempo. Eso es propenso a errores y aburrido en PHP.
– los métodos se llaman con “.”, No con “->”. Un personaje es mejor que 2 caracteres en algo tan común.
– La estructura del marco es realmente fácil de entender después de un tiempo.
– las gemas funcionan muy bien (en PHP, muchas extensiones están llenas de errores o exploits)
– Muchas cosas útiles son nativas como la pila de depuración, la canalización de activos (que se encargará de la minificación y la combinación de archivos), sass, coffeescript, migraciones, desarrollo de etapas múltiples o andamios.
– las pruebas unitarias son simples de escribir.

Las cosas malas:
– vas de una colección de funciones en PHP a una colección de clases, esto es un poco diferente.
– algunas de las clases o métodos no son tan claros (gsub puede ser simple para todos, pero no para mí)
– debe comprender mejor qué es una cadena, una matriz, un hash y qué es un número entero (en PHP, es posible codificar sin comprender esto) ya que las clases se aplican en su propio tipo. Para mí, con un fondo PHP, perder la matriz PHP (que es todo al mismo tiempo) fue un dolor …
– Tendrá que marcar más a tipo nulo, es decir, var.nil? o var.method.nil? ya que en algunos casos, esto puede arrojar un error fatal. Apuesto a que muchos desarrolladores de Rails tuvieron dificultades con este “error de método no”. O revisa el rescate.
– El marco y las gemas evolucionan a menudo rápidamente (puede ser difícil ir a una versión más nueva)

Echa un vistazo a la publicación de blog de Derek sobre volver a PHP después de usar RoR. Él es un gran defensor de los rieles y escribió el libro de tutoriales sobre rieles de Michael Hartl. Habla sobre su experiencia usando RoR para reconstruir CD Baby desde cero y los desafíos que tuvo. Es una buena lectura:
http://www.oreillynet.com/ruby/b

Mi amigo acaba de crear una publicación que describe su camino desde un desarrollador de PHP (con 5 años de experiencia detrás de su cinturón) hasta el desarrollador de RoR: cómo pasé de PHP a Rails (aunque esto no se trata de odio a PHP;)

Paul, en el avance del libro de Michael Hartl, Derek afirma que regresó a Rails después de “famoso” volver a PHP (a lo que hace referencia aquí). Por la forma en que redactó su publicación, hizo que pareciera que Derek se ha mantenido en PHP desde entonces, pero ese no es el caso.

Me encanta la versión de Chad Fowler sobre este 🙂

La Gran Reescritura – Chad Fowler

Es como encontrar el cielo mismo. Pero tenga en cuenta: Ruby no es igual a Ruby on Rails más de lo que php es igual a Laravel.

More Interesting

¿Qué software puede administrar los clientes potenciales que las personas envían a través de mi formulario web?

¿Cuáles son algunos ejemplos de uso práctico de AJAX y JQuery?

¿Cómo hago regex para hacer esto (string = # one # two; todo después de # poner en la etiqueta li para la lista y antes del nuevo # o final de la cadena cerrar la etiqueta li y así sucesivamente) por JavaScript?

A partir de 2014, ¿cuáles son los marcos JavaScript front-end más importantes que un desarrollador web front-end competente debe tener en cuenta?

¿Cuál es la mejor manera de construir un índice en tiempo real que cambie con el tiempo?

¿Qué tan buena es la API de Algolia?

Tengo la aplicación React que procesa todo en el lado del cliente. ¿Está bien esperar a que se genere una cookie antes de representar los componentes de la página?

¿Cuál es la diferencia entre HTTP y HTTPS?

Cómo crear un menú personalizado con sangrías triangulares a cada lado

Cómo volver a la programación (el desarrollo web para ser precisos) después de trabajar fuera del campo de TI durante 4 años

¿Cuál es el propósito de la porción de URL al crear un blog?

¿Es mejor mantener el estilo de su página web dentro de las etiquetas en el encabezado del documento, o usar un href = '' para vincular su documento HTML a un CSS separado?

¿Cuál es una buena herramienta de gestión de afiliados o sistema de seguimiento que puedo usar para mi tienda en línea?

¿Cuál es la forma más fácil de crear un sitio web que se vea y se sienta como Google Inbox?

Cómo integrar la autenticación de inicio de sesión en mi sitio personalizado con su contraparte de WordPress