¿Qué es Ruby on Rails?

Créditos de la imagen: RubyonRails.org

Un marco de desarrollo web para puristas

En 1995, Yukihiro Matsumoto lanzó Ruby 0.95 como un lenguaje de programación puro, orientado a objetos (OO) y de propósito general:

Como fanático del lenguaje y fanático de OO durante 15 años, realmente quería un lenguaje de scripts genuino, orientado a objetos y fácil de usar. Busqué pero no pude encontrar uno. Así que decidí hacerlo. - Y. Matsumoto

Luego, en 2004, David Heinemeier Hansson lanzó la primera versión de Ruby on Rails como un marco de aplicación web que usó para lanzar su aplicación de gestión de equipos Basecamp. Abrió Ruby on Rails en 2005, y Apple lo lanzó con OS X Leopard en 2007..

Para este tutorial, me referiré a Ruby on Rails como Rails para abreviar; algunas personas también usan RoR.

Rails es utilizado por una amplia variedad de aplicaciones web populares que puede conocer, como GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square y Highrise. Sin embargo, ha sido criticado por las limitaciones de escalabilidad, especialmente con Twitter, que gradualmente tuvo que mover muchos de sus servicios a otras plataformas. Dicho esto, Twitter tiene altas tasas de transacción y desafíos de escalabilidad..

En este tutorial, responderé la pregunta "¿Qué es Ruby on Rails?" y le presentamos los conceptos básicos del marco de programación para ayudarlo a experimentar con él..

Antes de comenzar, recuerde que participo en las discusiones a continuación. Si tiene alguna pregunta o sugerencia sobre un tema, envíe un comentario a continuación o contácteme en Twitter @reifman. 

¿Qué es Ruby on Rails??

Ruby on Rails es un marco de desarrollo web popular, de código abierto y orientado a objetos, utilizado por muchos programadores y proveedores de aplicaciones. También se basa en un enfoque de controlador de vista de modelo (MVC).

Los modelos se asignan a las bases de datos y la funcionalidad a un objeto en la aplicación, como los usuarios. Rails proporciona una convención estándar para nombrar y estructurar directorios de archivos, lo que simplifica la programación pero también proporciona soluciones automatizadas para la creación de una funcionalidad, denominada andamio. También garantiza un entorno común para que los desarrolladores trabajen juntos y se beneficien de los esfuerzos de los demás..

Optimización para la felicidad del programador con Convention over Configuration es la forma en que rodamos.

El controlador administra las solicitudes principalmente entre el usuario y el servidor, reuniendo datos de modelos y devolviéndolos al usuario a través de Ver archivos.

Las vistas son esencialmente archivos HTML programáticos que diseñan la página con los datos dinámicos..

Las convenciones de Rails guían a los desarrolladores a confiar en el enrutamiento RESTful. Las acciones del controlador en general, por ejemplo. Nuevo, crear, editar, actualizar, destruir, mostrar, indexar, etc. Esto es lo que permite a los usuarios y al sistema interactuar con varias características.

En conjunto, las características MVC de Rails se denominan Action Pack, es decir, ActionController, ActionView y ActiveRecord, este último para interactuar con la base de datos.

El fundador de Rails, Hansson, proporciona una teología de principios detrás del marco denominado The Ruby on Rails Doctrine.

La doctrina de Ruby on Rails

La doctrina de Rails consta de ocho principios:

  1. Optimice para la felicidad del programador: siempre que sea posible, Ruby intenta satisfacer los deseos del programador.
  2. Convención sobre la configuración: la elección de opciones predeterminadas estándar en toda la plataforma hace que sea más rápido y más fácil para los programadores comenzar a trabajar en nuevos proyectos.
  3. El menú es omakase: el equipo detrás de Ruby on Rails ha seleccionado las mejores herramientas y enfoques, y todos estarán más felices al usarlos..
  4. Ningún paradigma: al final, Rails incluye soluciones flexibles para diversas ocasiones.
  5. Exaltar código hermoso: un enfoque principal en la estética y la simplicidad.
  6. Sistemas integrados de valor: una orientación hacia el conocimiento y la cohesión completos de todas las herramientas necesarias para crear aplicaciones y soluciones.
  7. Progreso sobre la estabilidad: la voluntad de asumir riesgos para hacer avanzar la plataforma.
  8. Presiona una gran carpa: da la bienvenida a una gran comunidad de participantes y sus voces para establecer la visión.
El principal logro de Rails fue unir y cultivar una tribu fuerte en torno a un amplio conjunto de pensamientos heréticos sobre la naturaleza de la programación y los programadores. - David Heinemeier Hansson

Aquí están los principales colaboradores de Rails actualmente (el fundador David Hansson se encuentra en la parte superior izquierda):

Y tienen una comunidad cálida y acogedora:

  • La lista de correo de Ruby on Rails: Talk
  • La etiqueta Ruby on Rails StackOverflow Q&A
  • El canal de IRC #rubyonrails en irc.freenode.net
  • Una conferencia anual de RailsConf para encuentros del mundo real.

Quizás estés interesado en bucear más, así que aquí tienes cómo empezar..

Primeros pasos con Ruby on Rails

Rails tiene una colección de documentación sobresaliente. Aquí hay un vistazo a la Guía de introducción:

La guía lo guía a través de una introducción general, instalación básica y algunos programas para principiantes de Rails.

Instalación de Ruby on Rails

Los usuarios de Mac encontrarán Ruby preinstalado. Los usuarios de Windows pueden revisar RailsInstaller. Para una instalación completa de Rails en OS X, la guía recomienda Tokaido. Alternativamente, Daniel Kehoe sugiere evitar los instaladores con un solo clic y proporciona instrucciones detalladas para la instalación de Mac OS X El Capitan.

Los desarrolladores experimentados de Rails también informan que hace que el desarrollo de aplicaciones web sea más divertido. - Guía de rieles

Sin embargo, había pasado un tiempo desde que ejecuté Rails, y reinstalarlo en mi último modelo Mac en El Capitán llevaba mucho tiempo.

Verificar la instalación de Ruby

En OS X, Ruby será preinstalado:

$ ruby ​​-v ruby ​​2.0.0p645 (2015-04-13 revisión 50299) [universal.x86_64-darwin15]

Instale el Marco de Rieles

La instalación de My Rails demoró entre 10 y 15 minutos (tenga paciencia):

$ sudo gem install rails Contraseña: Obteniendo: thread_safe-0.3.5.gem (100%) Instalado exitosamente thread_safe-0.3.5 Obteniendo: tzinfo-1.2.2.gem (100%) Instalado exitosamente tzinfo-1.2.2 Obteniendo: minitest -5.8.4.gem (100%) Se instaló correctamente minitest-5.8.4 Obtención: activesupport-4.2.5.1.gem (100%) Se instaló correctamente activesupport-4.2.5.1 Obtención: rack-1.6.4.gem (100%) Instalación exitosa del rack-1.6.4 Obtención: rack-test-0.6.3.gem (100%) Instalación exitosa del rack-test-0.6.3 Obtención: mini_portile2-2.0.0.gem (100%) Instalación exitosa del mini_portile2-2.0. 0 Obtención: nokogiri-1.6.7.2.gem (100%) Creación de extensiones nativas. Esto podría llevar un tiempo ... Instalar correctamente nokogiri-1.6.7.2 Obtención: loofah-2.0.3.gem (100%) Instalar correctamente loofah-2.0.3 Obtención: rails-html-sanitizer-1.0.3.gem (100%) Instalación exitosa de rails-html-sanitizer-1.0.3 Obtención: rails-deprecated_sanitizer-1.0.3.gem (100%) Instalación exitosa de rails-deprecated_sanitizer-1.0.3 Obtención: rails-dom-testing-1.0.7.gem (100 %) Instalación exitosa de rails-dom-testing-1.0.7 Obtención: builder-3.2.2.gem (100%) Instalación exitosa de builder-3.2.2 Obtención: erubis-2.7.0.gem (100%) Instalación exitosa de erubis- 2.7.0 Obtención: actionview-4.2.5.1.gem (100%) Instalación exitosa de actionview-4.2.5.1 Obtención: actionpack-4.2.5.1.gem (100%) Instalación de actionpack-4.2.5.1 instalada con éxito: activemodel-4.2.5.1 .gem (100%) Se instaló exitosamente activemodel-4.2.5.1 Obtención: arel-6.0.3.gem (100%) Se instaló exitosamente arel-6.0.3 Obtención: activerecord-4.2.5.1.gem (100%) Se instaló exitosamente activerecord- 4.2.5.1 Obtención: globalid-0. 3.6.gem (100%) Se instaló exitosamente globalid-0.3.6 Obtención: activejob-4.2.5.1.gem (100%) Se instaló exitosamente activejob-4.2.5.1 Obtención: mime-types-2.99.gem (100%) Se instaló exitosamente mime -types-2.99 Obtención: correo-2.6.3.gem (100%) Instalación exitosa correo-2.6.3 Obtención: actionmailer-4.2.5.1.gem (100%) Instalación exitosa de actionmailer-4.2.5.1 Obtención: thor-0.19. 1.gem (100%) Instalado con éxito thor-0.19.1 Obtención: railties-4.2.5.1.gem (100%) Instalado correctamente railties-4.2.5.1 Obtención: bundler-1.11.2.gem (100%) Bundler instalado correctamente -1.11.2 Obtención: concurrent-ruby-1.0.0.gem (100%) Instalado con éxito concurrent-ruby-1.0.0 Obtención: piñones-3.5.2.gem (100%) Piñones correctamente instalados-3.5.2 Obtención: ruedas dentadas-rieles-3.0.1.gem (100%) Ruedas dentadas instaladas con éxito-3.0.1 Obtención: rieles-4.2.5.1.gem (100%) Rieles instalados con éxito-4.2.5.1 Documentación de análisis para thread_safe-0.3.5 Instalación de la documentación de ri para thread_safe-0.3.5 P arsing documentación para tzinfo-1.2.2 Instalación de la documentación de ri para tzinfo-1.2.2 Análisis de la documentación para minitest-5.8.4 Instalación de la documentación de ri para minitest-5.8.4 la documentación del análisis para activesupport-4.2.5.1 no se puede convertir "\ x84" de ASCII-8BIT a UTF-8 para lib / active_support / values ​​/ unicode_tables.dat, saltando Instalación de la documentación de ri para activesupport-4.2.5.1 Documentación de análisis para rack-1.6.4 Instalación de la documentación de ri para rack-1.6.4 Documentación de análisis para rack test-0.6.3 Instalación de la documentación de ri para rack-test-0.6.3 Documentación de análisis para mini_portile2-2.0.0 Instalación de la documentación de ri para mini_portile2-2.0.0 Documentación de análisis de nokogiri-1.6.7.2 no se puede convertir "\ xCA" desde ASCII -8BIT a UTF-8 para lib / nokogiri / nokogiri.bundle, saltando Instalación de la documentación de ri para nokogiri-1.6.7.2 Documentación de análisis para loofah-2.0.3 Instalación de la documentación de ri para loofah-2.0.3 Documentación de análisis para rails-html-sanitizer -1.0.3 Instalación de la documentación de ri para rails-html-sanitizer-1.0.3 Documentación de análisis para rails-deprecated_sanitizer-1.0.3 Instalación de la documentación de ri para rails-deprecated_sanitizer-1.0.3 Documentación de análisis para rails-dom-testing-1.0.7 Instalación de la documentación de ri para rails-dom -testing-1.0.7 Documentación de análisis para builder-3.2.2 Instalación de documentación de ri para builder-3.2.2 Documentación de análisis para erubis-2.7.0 Instalación de documentación de ri para erubis-2.7.0 Documentación de análisis para actionview-4.2.5.1 Instalación de ri documentación para actionview-4.2.5.1 análisis de documentación para actionpack-4.2.5.1 Instalación de la documentación de ri para actionpack-4.2.5.1 análisis de la documentación para activemodel-4.2.5.1 instalación de la documentación de ri para activemodel-4.2.5.1 análisis de la documentación para arel-6.0.3 instalación documentación de ri para arel-6.0.3 documentación de análisis para activerecord-4.2.5.1 Instalación de documentación de ri para activerecord-4.2.5.1 documentación de análisis para globalid-0.3.6 instalación de documentación de ri para globalid-0.3.6 documento de análisis Documentación para activejob-4.2.5.1 Instalación de la documentación de ri para activejob-4.2.5.1 Documentación de análisis para mime-types-2.99 Instalación de la documentación de ri para mime-types-2.99 Documentación de análisis para mail-2.6.3 Instalación de la documentación de ri para mail-2.6.3 Documentación de análisis para actionmailer-4.2.5.1 Instalación de la documentación de ri para actionmailer-4.2.5.1 Documentación de análisis para thor-0.19.1 Instalación de la documentación de ri para thor-0.19.1 Documentación de análisis para railties-4.2.5.1 Instalación de la documentación de ri para railties-4.2. 5.1 Documentación de análisis para bundler-1.11.2 Instalación de documentación de ri para bundler-1.11.2 Documentación de análisis para concurrent-ruby-1.0.0 Instalación de documentación de ri para concurrent-ruby-1.0.0 Documentación de análisis para piñones-3.5.2 Instalación de documentación de ri para ruedas dentadas-3.5.2 Documentación de análisis para ruedas dentadas-3.0.1 Instalación de documentación ri para ruedas dentadas-3.0.1 Documentación de análisis para guías-4.2.5.1 no se puede convertir "\ xFF" de ASCII-8BIT a UTF-8 F o guías / asset / images / akshaysurve.jpg, omitiendo no poder convertir "\ x89" de ASCII-8BIT a UTF-8 para guías / asset / images / belongs_to.png, omitiendo no poder convertir "\ xF4" de ASCII-8BIT a UTF-8 para guías / activos / imágenes / book_icon.gif, omitiendo no poder convertir "\ x91" de ASCII-8BIT a UTF-8 para guías / activos / imágenes / bullet.gif, omitiendo ... continúa y sigue ... no se puede para convertir "\ x80" de ASCII-8BIT a UTF-8 para guías / asset / images / tab_yellow.gif, omitiendo no poder convertir "\ x89" de ASCII-8BIT a UTF-8 para guías / asset / images / tab_yellow. png, omitiendo no poder convertir "\ xFF" de ASCII-8BIT a UTF-8 para guías / asset / images / vijaydev.jpg, saltando Instalación de documentación de ri para rieles-4.2.5.1 31 gemas instaladas

Pero, funcionó:

$ rails --version rails 4.2.5.1 

Crea tu aplicación e instancia de framework

Entonces creé una nueva aplicación llamada blog:

$ rails new blog create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app / assets / javascripts / application.js create app / asset / stylesheets / application.css create app / controllers / application_controller.rb cree la aplicación / helpers / application_helper.rb cree la aplicación / views / layouts / application.html.erb cree la aplicación / asset / images /. keep create app / mailers /. keep create app / models /. keep create app / controllers / concern / .tenga crear aplicaciones / modelos / inquietudes /. mantener crear bin crear bin / bundle crear bin / rails crear bin / rake crear bin / configurar crear configuración crear config / route.rb crear config / application.rb crear config / environment.rb crear config / secrets.yml create config / environment create config / environment / development.rb create config / tomatoes / production.rb create config / environment / test.rb create config / initializers create config / initializers / asset.rb create config / initializers / backtrace_silencers.rb create config / initializers / cookies_seriali zer.rb create config / initializers / filter_parameter_logging.rb create config / initializers / inflections.rb create config / initializers / mime_types.rb create config / initializers / session_store.rb create config / initializers / wrap_parameters.rb create config / locales create config / locales / en.yml create config / boot.rb create config / database.yml create db create db / seeds.rb create lib create lib / tasks create lib / tasks / .keep create lib / asset create lib / asset /. keep create registro crear registro /. mantener crear público crear público / 404.html crear público / 422.html crear público / 500.html crear público / favicon.ico crear público / robots.txt crear prueba / arreglos crear prueba / accesorios /. mantener crear prueba / controladores crear prueba / controladores /. mantener crear prueba / remitentes crear prueba / remitentes /. mantener crear prueba / modelos crear prueba / modelos /. mantener crear prueba / ayudantes crear prueba / ayudantes /. mantener crear prueba / integración crear prueba / integración / .tenga crear prueba / test_helper.rb crear tmp / caché crear tmp / caché / activos crear vendedor / activos / javascripts crea proveedores / activos / javascripts /. mantenemos creadores / activos / hojas de estilo crea vendedores / activos / hojas de estilo / .tenga ejecute el paquete de instalación Su cuenta de usuario no está permitida de instalar en el sistema Rubygems. Puede cancelar esta instalación y ejecutar: bundle install --path vendor / bundle para instalar las gemas en ./vendor/bundle/, o puede ingresar su contraseña e instalar las gemas en Rubygems usando sudo. Contraseña: Obtención de metadatos de gemas de https://rubygems.org/…. Obtención de metadatos de versión de https://rubygems.org/…. Obtención de metadatos de dependencia de https://rubygems.org/… Resolución de dependencias ... Rubygems 2.0.14 no es seguro para hilos, para que tus gemas se instalen una a la vez. Actualice a Rubygems 2.1.0 o superior para habilitar la instalación de gemas paralelas. Instalación de rake 10.5.0 con i18n 0.7.0 Instalación de json 1.8.3 con extensiones nativas con minitest 5.8.4 con thread_safe 0.3.5 con builder 3.2.2 con erubis 2.7.0 con mini_portile2 2.0.0 con rack 1.6.4 con mime -tipos 2.99 Uso de arel 6.0.3 Instalación de debug_inspector 0.0.2 con extensiones nativas Uso de bundler 1.11.2 Instalación de byebug 8.2.2 con extensiones nativas Instalación de coffee-script-source 1.10.0 Instalación de execjs 2.6.0 Uso de thor 0.19.1 Uso concurrente -ruby 1.0.0 Instalación de multi_json 1.11.2 Instalación de sass 3.4.21 Instalación de tilt 2.0.2 Instalación de spring 1.6.3 Instalación de sqlite3 1.3.11 con extensiones nativas Instalación de rdoc 4.2.1 Uso de tzinfo 1.2.2 Uso de nokogiri 1.6.7.2 Uso de rack -prueba 0.6.3 Uso del correo 2.6.3 Instalación de binding_of_caller 0.7.2 con extensiones nativas Instalación de coffee-script 2.4.1 Instalación del uglifier 2.7.2 Uso de ruedas dentadas 3.5.2 Instalación del sdoc 0.4.1 Uso de activesupport 4.2.5.1 Uso de lufa 2.0.3 Uso de rails-deprecated_sanitizer 1.0.3 Uso de globalid 0.3.6 Uso de activemodel 4.2.5.1 Instalación de jbuilder 2.4.0 Uso de rails-html-sanitizer 1.0.3 Uso de rails-dom-testing 1.0.7 Uso de activejob 4.2.5.1 Uso de activerecord 4.2.5.1 Uso de actionview 4.2.5.1 Uso de actionpack 4.2.5.1 Uso de actionmailer 4.2.5.1 Uso de rieles 4.2.5.1 Uso de rieles de rueda dentada 3.0.1 Instalación de rieles de café 4.1.1 Instalación de rieles de jquery 4.1.0 Uso de rieles 4.2.5.1 Instalación de rieles de sass 5.0.4 Instalación de la consola web 2.3.0 Instalación de turbolinks 2.5.3 Paquete completo! 12 dependencias de Gemfile, 54 gemas ahora instaladas. Use 'bundle show [gemname]' para ver dónde se instala una gema agrupada. Mensaje posterior a la instalación de rdoc: Dependiendo de su versión de ruby, es posible que necesite instalar los datos de ruby ​​rdoc / ri: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2: nada que hacer! ¡Hurra! ejecute el paquete exec spring binstub --all Advertencia: está usando Rubygems 2.0.14 con Spring. Actualice al menos a Rubygems 2.1.0 y ejecute 'gem pristine - all' para un mejor rendimiento de inicio. * bandeja / rastrillo: resorte insertado * bandeja / rieles: resorte insertado

Puede navegar por la estructura de directorios del marco de la aplicación web Rails dentro de su aplicación:

$ cd blog $ ls Gemfile Rakefile config lib test Prueba Gemfile.lock aplicación config.ru log tmp README.rdoc bin db public vendor

Aquí hay una vista de la guía de introducción que muestra cómo Rails se basa en la convención sobre la configuración:

Inicie su servidor

Finalmente, puede iniciar su servidor con una línea de comando:

$ bin / rails server Advertencia: Estás usando Rubygems 2.0.14 con Spring. Actualice al menos a Rubygems 2.1.0 y ejecute 'gem pristine - all' para un mejor rendimiento de inicio. => Arranque de la aplicación WEBrick => Rails 4.2.5.1 que comienza su desarrollo en http: // localhost: 3000 => Ejecute 'rails server -h' para obtener más opciones de inicio => Ctrl-C para apagar el servidor [2016-02-05 18 : 14: 05] INFO WEBrick 1.3.1 [2016-02-05 18:14:05] INFO ruby ​​2.0.0 (2015-04-13) [universal.x86_64-darwin15] [2016-02-05 18:14 : 05] INFO WEBrick :: HTTPServer # inicio: pid = 30576 puerto = 3000

Visite su aplicación

En su navegador, vaya a http: // localhost: 3000, y debería ver su página de inicio predeterminada para una aplicación de Rails genérica:

Debo decir que desearía que todo esto fuera un poco más limpio. Dicho esto, hay algunos recursos comunitarios maravillosos para ayudarte a crecer.

Yendo más profundo

Este es un ejemplo de una presentación en pantalla gratuita de GoRails que cubre la arquitectura básica de la aplicación de marco que se muestra en el directorio anterior:

Y la Guía Rails en sí te guía por una serie de pasos iniciales:

En general, hay una gran variedad de tutoriales escritos y de screencast para guiarte.

Para concluir

Si está intrigado por la calidad de Ruby on Rails y su comunidad, espero que haya encontrado esta introducción un punto de partida útil. Tal vez incluso has intentado la instalación anterior.

Más recientemente, estoy intrigado por el suministro abierto de Swift de Apple, un participante emocionante en el espacio del lenguaje de programación orientado a objetos, similar a Ruby con un potencial similar a largo plazo a Rails.

Si bien he trabajado con Rails en el pasado, también he tenido problemas, especialmente con el alojamiento y la funcionalidad de expansión, también me ha resultado más costoso alojarlo. Sigo sintiéndome más cómodo con Yii, que puedes leer en nuestra Serie de Programación Envato Tuts + Yii2. Y con PHP 7 emergente, el futuro se ve más rápido y brillante para los marcos de programación basados ​​en PHP.

Si tiene preguntas, por favor publíquelas a continuación. O bien, puede ponerse en contacto conmigo en Twitter @reifman. Visite mi página de instructor de Envato Tuts + para ver otros tutoriales que he escrito, como Usar las redes sociales para localizar testigos presenciales, que destaca las API de Instagram y Twitter..

enlaces relacionados

  • Ruby on Rails
  • Ruby on Rails (Wikipedia)
  • Sigue a @Rails en Twitter
  • Suscríbete a esta semana en Rails
  • Go Rails (screencasts y más)
  • Lenguaje de programación rubí (Wikipedia)
  • Controlador de vista de modelo (Wikipedia)
  • RailsConf