Cursos de programación Ruby on Rails. Ruby para principiantes: lo interesante de este idioma y cómo aprenderlo de manera efectiva

"¡Hola! ¿Qué estás haciendo?" - “Sí, programaré una cosa en Ruby.” - "Es contagioso:-)"
Esta es una conversación que tuve hoy con un amigo. ¿Por qué rubí?

¿Por qué aprender Rubí?

Esta pregunta concierne a aquellos que han estado programando en PHP durante mucho tiempo y con éxito. Has dominado un idioma, lo cual es genial, pero no te detengas ahí. Muchos pueden objetar que conocen el idioma, están orientados en nyoi y ya han aprendido todos los trucos con él. Mencionaré algunas razones para aprender Ruby.

  1. Curiosidad. Por ejemplo, para mí fue muy interesante trabajar con clases abiertas. Así es como tomar e inyectar su método en la clase del sistema; en mi opinión, es genial. ¿Habrá confusión? ¿Pero como hacerlo? En general, todo lo nuevo es interesante.
  2. . Porque Llevo mucho tiempo programando en PHP, me pregunto de que puede presumir Ruby frente a PHP/
  3. Velocidad rubí. Un twitter está hecho en Ruby (aunque ha sido abandonado recientemente). Me gustaría probar su rendimiento en la realidad.
  4. clase de problema. Ruby es bueno para aplicaciones web. ¿Es eso así?
  5. Metaprogramación. Quizás la razón más importante.

Cómo aprender Rubí. plano académico.

Aquí es donde mi primer error fue que comencé a aprender el marco sin saber el idioma. Ahora entiendo que esto no es necesario. Olvidándome de Ruby on Rails por un tiempo, comencé a estudiar Ruby en sí mismo, ya que una tarea del sistema colgó en el sistema de tickets durante mucho tiempo, lo cual era difícil de resolver en php. Realmente no quería darle permisos de root. Así que el plan es este.

  1. Funciones, clases, clases públicas. Atributos (accesorios y mutadores).
  2. Trabajando con cadenas, con arreglos. Encontrar y reemplazar subcadenas, etc. Tipo de conversión.
  3. Trabajar con archivos.
  4. Trabajar con el entorno del sistema.
  5. Diseño de aplicaciones, trabajo con gemas (módulos).
  6. Trabajando con DB.
  7. Instalación de Ruby on Rails, .

En esta publicación, publicaré mi primera aplicación Ruby e invitaré a todos a la discusión. Señale los errores, ofrezca las mejores prácticas, haga preguntas.

¡Aprendamos Ruby juntos!

Lección 1. La primera aplicación en Ruby.

La tarea es esta. Hay un servidor DNS en el alojamiento, y al llamar a la utilidad de la consola de Ruby, debe agregar una zona para el dominio, así como una entrada de zona a la lista de zonas (domains.list) y cambiar una entrada en la base de datos donde registrar este dominio. La configuración de acceso a la base de datos se almacena en la aplicación php, específicamente en su archivo INI. Después de todos los pasos, debe reiniciar el servidor DNS (enlace).

Banco de trabajo para Ruby

Como IDE, usaré RubyMine de JetBrains. Me gustaron mucho. Aunque se trataba de phpStorm, la calidad es inmediatamente visible. Primero instalamos ruby ​​​​a través de RVM para todos los usuarios, luego lo configuramos para root y nuestro usuario.

Ampliación de las clases públicas de Ruby

Para trabajar con archivos INI en Ruby, usamos la gema inifile. Pero tiene un pequeño problema. En un archivo ZF INI, puede usar constantes de manera segura, y las líneas se ven así:

IncluirPaths = RUTA_APLICACIÓN "/../proveedores/Doctrine/"

Aquí, desde APPLICATION_INI, demuele el analizador de gemas. En concreto, esta línea no se ajusta a ningún patrón:

@rgxp_comment = %r/\A\s*\z|\A\s*[#(@comentario)]/ @rgxp_section = %r/\A\s*\[([^\]]+)\] /o @rgxp_param = %r/\A([^#(@param)]+)#(@param)\s*"?([^"]*)"?\z/

Esta es la situación para el uso de clases públicas. Reemplacemos la función IniFile::parse con la nuestra. Agregaré todas las adiciones al archivo fucntion.rb

Class IniFile private # # call-seq # parse # # Analiza el contenido del archivo ini. # def analizar regresar a menos que File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # crea variables tmp para indicar que se ha iniciado una multilínea # y las siguientes líneas del archivo ini se compararán # con las otras rgxps de línea múltiple. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # se encuentra el delimitador final de línea mutua # borra las vars tmp y agrega el par parámetro / valor a la sección elsif line =~ @rgxp_multiline_end && tmp_param != "" luego sección = tmp_value + $1 tmp_value, tmp_param = "", "" # cualquier otra cosa entre el inicio y el final de la multilínea elsif line =~ @rgxp_multiline_value && tmp_param != "" luego tmp_value += $1 + "\n" # ignorar las líneas en blanco y las líneas de comentario elsif line =~ @rgxp_comment luego siguiente # esta es una declaración de sección elsif line =~ @rgxp_section luego sección = @ini[$1.strip] # de lo contrario tenemos un parámetro elsif line =~ @rgxp_param luego comenzar sección[$1.strip] = $2.strip rescatar NoMethodError generar error, "parámetro encontrado antes de la primera sección" end elsif línea =~ %r/APPLICATION_/ luego siguiente generar error, "no se pudo analizar la línea "#(línea)" end end # mientras asegura fd.close si está definido?fd y fd end end

También extenderé la clase String para permitir la validación de dominios.

Class String def valid_domain_name? nombre_dominio = self.split(".") nombre = /(?:+)+/.match(nombre_dominio).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| yo|mil|mobi|museo|ms|nombre|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end

Fuentes

Bueno, ahora te mostraré la fuente real.
índice.rb

#codificación: utf-8 requiere "mysql2" requiere "socket" requiere "inifile" requiere "./functions.rb" # Hash de hosts de direcciones de máquinas del servidor = (:producción => "83.168.22.1",:prueba => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Comprobar parámetros salir si (ARGV.count != 2) dominio = ARGV nombre de host = ARGV .split(".") quit("Nombre de dominio no válido") if (¿no es dominio.nombre_de_dominio_válido?) # Buscar una empresa en la base de datos resultado = Mysql2::Client.new(util.get_db_settings).query("SELECCIONAR id FROM `sitios` WHERE `hostname` = "#(hostname)"") quit("Empresa no encontrada") if result.count != 1 # Actualizar su nombre de host filas = Array.new result.each(|row| rows<< row} company_id = rows["id"] result = Mysql2::Client.new(util.get_db_settings).query("UPDATE `dbname`.`sites` SET `domain` = "#{domain}" WHERE `dao_companies`.`id` =#{company_id};") # Добавление зоны bind_config_path = "/etc/bind" default_zone_file = bind_config_path + "/zones/DEFALT" new_zone_file = bind_config_path + "/zones/#{domain}.zone" zones_list_file = bind_config_path + "/domains.lst" quit("File with default zone does not exists") unless File.exist?(default_zone_file) quit("File with zones list does not exists") unless File.exist?(zones_list_file) zone = IO.read(default_zone_file).gsub("SERIAL",Time.now.strftime("%Y%m%d%S")).gsub("DOMAIN", domain) if not File.exist?(new_zone_file) then File.open(new_zone_file, "w") {|f| f.puts(zone) } else quit("Domain "+domain+" zone already exists!") end # Добавление зоны в список zone = "zone \"#{domain}\" { type master; file \"/etc/bind/zones/#{domain}.zone\"; };" if not IO.read(zones_list_file).include?(domain) then File.open(zones_list_file, "a") {|f| f.puts(zone) } end # Перезапуск сервисов (bind9) system("service bind9 restart") puts "Completed"

archivo de gemas
Este archivo describe las dependencias del proyecto.

Fuente: rubygems gema "mysql2", "0.2.6" gema "inifile"

Bueno, en realidad incluye funciones.
funciones.rb

#codificación: utf-8 class String def valid_domain_name? nombre_dominio = self.split(".") nombre = /(?:+)+/.match(nombre_dominio).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| yo|mil|mobi|museo|ms|nombre|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end class IniFile private # # call-seq # parse # # Analiza el contenido del archivo ini. # def analizar regresar a menos que File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # crea variables tmp para indicar que se ha iniciado una multilínea # y las siguientes líneas del archivo ini se compararán # con las otras rgxps de línea múltiple. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # se encuentra el delimitador final de línea mutua # borra las variables tmp y agrega el par parámetro / valor a la sección elsif line =~ @rgxp_multiline_end && tmp_param != "" luego sección = tmp_value + $1 tmp_value, tmp_param = "", "" # cualquier otra cosa entre el inicio y el final de varias líneas elsif line =~ @rgxp_multiline_value && tmp_param != "" luego tmp_value += $1 + "\n" # ignorar las líneas en blanco y las líneas de comentario elsif line =~ @rgxp_comment luego siguiente # esta es una declaración de sección elsif line =~ @rgxp_section luego sección = @ini[$1.strip] # de lo contrario, tenemos un parámetro elsif line =~ @rgxp_param luego comenzar sección[$1.strip] = $2.strip rescatar NoMethodError generar error, "parámetro encontrado antes de la primera sección" finalizar línea elsif =~ %r/APPLICATION_/ luego siguiente generar error, "no se pudo analizar la línea "#(línea)" end end # mientras asegura fd.close si está definido? fd y fd end end def quit(message=nil) banner = " === ========================== | Herramienta de adición de DNS | ============================ Uso: ruby ​​​​./index.rb domain.com olddomain.site.com" si no es un mensaje .nil luego banner = final del mensaje pone banner exit end class Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Obtener la dirección IP local def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # desactivar la resolución DNS inversa temporalmente UDPSocket.open do |s|s.connect "64.233.187.99", 1 s.addr.last end asegurar Socket.do_not_reverse_lookup = orig end # Obtener el entorno def get_environment si @ medio ambiente.nil? then hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "desarrollo" end else @environment.to_s end end def get_config_path local_username = get_local_username "/home/" +local_username+"/sandbox"+self.releative_config_path end # Devuelve el nombre de usuario si la utilidad se ejecuta a través de rvmsudo o directamente def get_local_username si ENV["SUDO_USER"].nil? quit("Util debe ejecutarse sobre rmvsudo, \r\nejemplo: rvmsudo ruby ​​​​./index.rb dominio.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = IniFile:: load( self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("No hay una sección adecuada en el archivo de configuración") a menos que config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. default.dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :username => arr.split(":"), : contraseña = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) end end

Pero ¿qué pasa con PHP?

Esta publicación no se trata de dejar PHP y aprender Ruby. PHP es el lenguaje de programación web más popular, se implementan miles de cosas interesantes y algoritmos, incl. incluso redes neuronales. Y lo amo) A lo largo de los años, se puede decir que me relacioné con él, a pesar de todas sus deficiencias. Pero esto no significa que no debas aprender algo nuevo por ti mismo.

Recientemente me han hecho la pregunta de qué libros debo aprender Ruby. Estoy leyendo este ahora mismo.

Este libro es la guía oficial del lenguaje de programación dinámico Ruby. El equipo de autores es realmente estelar: David Flanagan es un conocido especialista en el campo de la programación, autor de una serie de libros sobre JavaScript y Java que han sido superventas; Yukihiro "Matz" Matsumoto es el creador y desarrollador principal de Ruby.
El libro proporciona una descripción detallada de todos los aspectos del lenguaje: la estructura léxica y sintáctica de Ruby, variedades de datos y expresiones elementales, definiciones de métodos, clases y módulos. Además, el libro contiene información sobre las API de la plataforma Ruby.

La publicación será de interés para los programadores experimentados que se están familiarizando con el nuevo lenguaje Ruby, así como para aquellos que ya están programando en Ruby y desean alcanzar un mayor nivel de comprensión y ejecución. Puedes encontrar un libro sobre el ozono o un biblio-globo.

¡Espero sus comentarios sobre el código y cualquier idea interesante!)

¡Gracias!

Si este artículo te ayudó, o si quieres apoyar mi investigación y mi blog, esta es la mejor manera de hacerlo:

Este es el primero de una serie de artículos en los que hablaré sobre las características de Ruby y Ruby on Rails y compartiré consejos sobre cómo comenzar a aprender Ruby, dónde encontrar respuestas a preguntas, cómo obtener la experiencia adecuada y cómo puede destacarse de otros candidatos. Estaré encantado si mi consejo ayuda a alguien a decidirse por una especialización y elegir Ruby para aprender y trabajar.

Características clave y diferencias de Ruby

A menudo escucho la pregunta: ¿vale la pena aprender Ruby? Como regla general, la pregunta se basa en dudas: qué tan fácil es encontrar un trabajo con esta especialización, si habrá proyectos interesantes, etc. Ruby es un lenguaje de programación moderno y en constante evolución, hay muchas aplicaciones para él. Seguro que has oído hablar de Chef, Vagrant, Homebrew, pero la mayoría de las veces todos oímos hablar de Rails. Aquí hay una publicación con un comentario del autor del marco sobre por qué debería aprender Rails.

Por supuesto, cada uno decide por sí mismo qué herramienta usar. Y no tiene sentido discutir interminablemente por qué una tecnología es mejor que otra. Elegí Ruby porque es un lenguaje increíblemente expresivo y flexible que te permite resolver el mismo problema de muchas maneras.

Ruby es un lenguaje de programación totalmente orientado a objetos e interpretado con fuerte escritura dinámica. Combina una sintaxis similar a la de Perl con un enfoque orientado a objetos. Además, algunas características se toman prestadas de los lenguajes de programación Python, Lisp, Dylan y CLU. La implementación multiplataforma del intérprete de lenguaje Ruby se distribuye bajo los términos del software de código abierto. El código escrito en Ruby puede ser entendido incluso por una persona que no entiende de programación. Sobre RoR se han creado proyectos como Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb y otros.

Con el auge de Node.js, la popularidad de Ruby on Rails ha disminuido un poco, pero las nuevas empresas tecnológicas a menudo usan RoR debido a la facilidad de creación de prototipos. Ruby es el undécimo idioma más popular en el índice TIOBE.

Beneficios de Rubí

  • Comunidad numerosa y amigable.
  • Una barrera de entrada bastante alta, lo que significa que es probable que un desarrollador de Ruby tenga experiencia en al menos otro lenguaje de programación.
  • Solo usa las bibliotecas y módulos que necesita.
  • Hay una gran cantidad de bibliotecas útiles que están listas para usar (Ruby Gems).
  • Hay mucha información sobre Ruby en Internet, de forma estructurada y tamizada.
  • En el contexto de la discusión de Ruby, es imposible no mencionar el framework Ruby on Rails más popular.

Ahora hablemos sobre algunos de los beneficios de Ruby con más detalle.

Velocidad de desarrollo

Una de las ventajas de Ruby y el framework RoR es la velocidad de desarrollo. La experiencia personal y la experiencia de los colegas muestra que resolver problemas en Rails es una vez y media más rápido en comparación con otros marcos similares. Ruby es una herramienta muy simple y hay una gran cantidad de soluciones listas para usar para varios tipos de tareas.

Herramientas regulares de almacenamiento en caché de datos

Al desarrollar un proyecto a gran escala, uno de los puntos más importantes es el almacenamiento en caché. Ruby on Rails viene de serie con herramientas nativas de almacenamiento en caché de datos. Es decir, inmediatamente tendrá herramientas para almacenar en caché los datos del proyecto y puede almacenar fácilmente en caché bloques de código individuales o incluso páginas enteras.

Primero pruebas, luego código

A menudo, en el proceso de desarrollo de grandes proyectos, surge la cuestión de las pruebas, y no es raro que no haya fondos adicionales para un equipo separado de probadores. Rails también tiene una solución a este problema. Si compara RoR con otros marcos en el contexto de las pruebas de aplicaciones, encontrará muchas soluciones listas para usar para cualquier tipo de prueba, ya sea de integración o de unidad. Todas estas bibliotecas funcionan de forma inmediata. Idealmente, en un proyecto de Ruby on Rails, el código no se escribe hasta que se escriben pruebas para él. La ideología RoR implica el uso inicial de métodos BDD (Behavior Driven Development) o TDD (Test Driven Development).

Estándares de proceso de desarrollo generalmente aceptados para desarrolladores de Ruby

Hablando de los beneficios de Ruby, no puedo dejar de mencionar de nuevo a la comunidad de Ruby. Está en constante crecimiento, desarrollo y siempre dispuesto a ayudar. Siempre hay alguien que le dirá la mejor manera de resolver el problema, compartir experiencia en cualquier asunto.

Otro punto muy importante es que la comunidad Ruby tiene unos estándares para el proceso de desarrollo desde hace muchos años, unas reglas/acuerdos comunitarios que rigen el desarrollo, lo que simplifica mucho el trabajo. Debido a estos estándares, cada proyecto está muy estructurado, respectivamente, un nuevo desarrollador en el equipo se pondrá al día rápidamente y podrá ser útil desde los primeros días de trabajo. Y aún más: si el proyecto lo inició un equipo y lo terminó otro, tampoco es un problema. Dado que el desarrollo se lleva a cabo de acuerdo con las reglas y los acuerdos de la comunidad ya mencionados, el nuevo equipo profundizará rápida y fácilmente en el proyecto y lo completará con éxito sin mucha pérdida de tiempo.

Además, Ruby on Rails tiene una gran cantidad de diferentes soluciones listas para usar en el dominio público. La mayoría de las soluciones ya las ha implementado alguien antes que usted, y la comunidad las ha probado, lo que reduce la necesidad de desarrollarlas desde cero. Estos pueden ser autenticación, autorización, sistemas de comentarios, sistemas de pago, listas de correo, etc.

Soluciones preparadas para el multilingüismo de proyectos

Rails viene con herramientas muy poderosas para la localización de proyectos listas para usar. Es posible tanto proporcionar soporte para varios idiomas inicialmente como implementarlo más adelante. El proyecto contiene archivos especiales para traducir términos, herramientas para mostrar plantillas en diferentes idiomas y mucho más.

Alto nivel de protección de datos

Ahora, los artículos sobre piratería de varios recursos a menudo se publican en la red. Los desarrolladores del marco Ruby on Rails se tomaron muy en serio el tema de la protección de datos. RoR encripta inicialmente contraseñas, datos de tarjetas de crédito y otros datos personales del usuario, también se excluyen las inyecciones de SQL y los ataques XSS. Todos los parámetros de entrada se escapan de forma predeterminada.

aprendiendo rubí

Ahora hablemos de cómo puedes dominar Ruby exactamente.

Teoría

Deberías empezar, por supuesto, con la literatura. Recomiendo estas fuentes:

  • Ruby en 20 minutos es un buen recurso para principiantes. Te permite familiarizarte con las construcciones básicas del lenguaje en menos de media hora y comenzar a escribir tus propios pequeños programas.
  • Codecademy es una plataforma con cursos en línea en muchas áreas, incluido Ruby puro y Rails. Aquí, el proceso de aprendizaje se construye de manera bastante interesante, se entrega material teórico e inmediatamente una tarea práctica para consolidarlo. Las tareas finales se pagan, pero sin ellas puedes obtener las habilidades necesarias.
  • Recursos de Ruby y Rails: una colección de enlaces a varios sitios y libros dedicados al aprendizaje de Ruby y Rails.
  • Por separado, puedo recomendar el libro Flanagan D., Matsumoto Y. "The Ruby Programming Language". Es considerado uno de los mejores, su autor es el mismo creador del lenguaje Ruby.
  • Google :)

Aquí hay un par de recursos para comenzar:

  • w3schools.com/sql - Lea, intente y pruebe su conocimiento de SQL aquí.
  • quizful.net/test: aquí puede encontrar preguntas que se hacen a menudo en las entrevistas.

inglés

Creo que no tiene sentido insistir en este punto en detalle, ya que este es el tema de un artículo separado. El inglés es muy importante y esto es un hecho bien conocido. Me gustaría mencionar brevemente dos de los puntos más importantes.

En primer lugar, el inglés es el idioma principal de la comunidad internacional, por lo que la mayor parte de la literatura útil también estará en inglés, muchas noticias, informes y artículos importantes también aparecerán primero en inglés. Si quieres saber la respuesta a alguna pregunta, es muy probable que antes que nada puedas encontrarla en inglés.

En segundo lugar, cuanto mejor sea su conocimiento del inglés, más posibilidades tendrá de encontrar trabajo. La mayoría de los clientes son extranjeros, por lo tanto, el conocimiento del inglés es importante para una comunicación productiva, una comprensión clara de los requisitos técnicos y un buen contacto con el cliente.

Práctica

Después de explorar algunos recursos, es hora de pasar a la parte más importante, que es la práctica. Hay muchos ejemplos de tareas con una tienda en línea o un simple blog en la web (aquí hay uno de ellos), especialmente si hablamos de Rails. En el transcurso de completar tareas que ya están un poco cerca de lo real, definitivamente encontrará algunos problemas y luego pasará a entrenar una de las cualidades más importantes: la capacidad de googlear. Desafortunadamente, no pude encontrar ningún tutorial o curso dedicado a esta habilidad, pero definitivamente juega un papel muy importante en el trabajo diario.

Cursos

Después de leer la teoría y escribir varios "proyectos favoritos", por supuesto, puede intentar ir a entrevistas, pero a menudo sucede que este conocimiento no es suficiente. Esto se debe a la gran afluencia de candidatos, y dada la competencia, todos tratan de sobresalir y prepararse lo mejor posible.

Otro punto importante en la formación, que puede ser una ventaja a tu favor a la hora de buscar trabajo, es la programación de cursos. A menos, por supuesto, que tenga un mentor que esté dispuesto a pasar una cierta cantidad de tiempo elaborando tareas y revisándolas.

Debo decir de inmediato que en ningún caso recomiendo ir a cursos sin tener ya algún tipo de base de conocimientos. Veo los cursos como una excelente manera de consolidar los conocimientos adquiridos en el proceso de autoaprendizaje. Y ahora no estoy tratando de publicitar ninguna escuela en particular, pero explicaré exactamente qué beneficios se pueden derivar de esto:

Lo más probable es que haya aprenderás algo que no sabías antes. Los cursos tienen una cantidad bastante grande de material que se presenta de forma estructurada, lo que te permite asimilar mejor el material.

Durante el curso tendrás mentor, que revisará la solución de tus tareas y señalará debilidades y errores.

Motivación. Esto es principalmente para aquellos que necesitan ayuda con la autodisciplina. A veces es bastante difícil obligarse a hacer algo, sin importar las perspectivas que se avecinan en el horizonte. Cuando asista a cursos, tendrá un horario claro que seguir y tareas que completar o será expulsado. La motivación financiera también juega un papel aquí, en el caso de los cursos pagados. Después de todo, cuando das el dinero que tanto te costó ganar, ya tienes una actitud completamente diferente sobre el asunto, y los pensamientos de simplemente omitir surgen con mucha menos frecuencia.

Otra ventaja - certificado. Está claro que al final te evaluarán los conocimientos, y no la presencia de papeles en tu currículum. Sin embargo, será un plus, sobre todo si hay un candidato con un nivel de conocimientos similar, pero sin sus pruebas documentales.

Mas uno proyecto en GitHub en tu alcancía. Si es un desarrollador novato, lo más probable es que el proyecto escrito en los cursos sea más interesante en términos de tecnología que los que se escribieron anteriormente.

Y lo más importante - empleo. Hablando de cursos, no me refiero solo a aquellos por los que necesitas pagar dinero. A menudo, las propias empresas reclutan para la capacitación, para luego poder contratar a los mejores. Estos pueden ser cursos internos o pasantías/prácticas. Esta opción es la mejor, ya que no tiene que pagar nada, obtiene experiencia y todas las ventajas anteriores, y además, una perspectiva de empleo real. Llegar a ellos es más difícil, pero las perspectivas son más significativas.

Total

Ruby es un lenguaje que le permite trabajar sin muchos inconvenientes y ceremonias que vienen con lenguajes fuertemente tipados. Es fácil comenzar con Ruby, especialmente si ya tiene experiencia en desarrollo en otros lenguajes de programación y puede crear prototipos rápidamente con Ruby on Rails. En Japón, de donde proviene, Ruby se usaba para hacer juegos. Ruby es conciso y se lee como inglés, lo que hace que el código sea fácil de entender para los principiantes.

En cuanto a aprender Ruby, quiero reiterar: debes comenzar poco a poco. Lee algunos libros, haz algunas tareas por tu cuenta y luego, si sientes la necesidad de adquirir más conocimientos y experiencia o motivación adicional, puedes ir a cursos que ya tengan una cierta cantidad de conocimientos adquiridos por tu cuenta.

Lo ideal es que sean cursos de una empresa que al final te haga una oferta si te va bien. Una opción alternativa son los cursos pagos que te ayudarán a consolidar tus conocimientos, agregar otro proyecto a tu currículum y adquirir experiencia, que es lo más importante al principio. Pero no espere que después de completar los cursos pagos, pase fácilmente la entrevista mostrando un certificado. En todo caso, se evaluarán los conocimientos.

Al mismo tiempo, si tiene suficiente motivación, paciencia, habilidades y experiencia con otros lenguajes de programación, puede dominar fácilmente Ruby por su cuenta, porque hay mucha información útil y bien estructurada en Internet. Además, gracias a la comunidad abierta y numerosa de Ruby, puede encontrar fácilmente respuestas en línea a muchas posibles preguntas que, con un alto grado de probabilidad, alguien ya ha hecho antes que usted.

¡Buena suerte con tu estudio! Y en el próximo artículo hablaremos sobre el código.

Suscríbase a nuestro canal de Telegram para jóvenes para no perderse vacantes interesantes, pasantías, cursos, artículos.

¡Buenos días!

Prefacio

Una vez quise conocer Rails mejor, pero no sabía por dónde empezar hasta que este artículo me llamó la atención. Más adelante verá la traducción, mezclada con mi propia experiencia y giros léxicos y fraseológicos peculiares para mí. Entonces vamos.

Introducción

Tengo mucha experiencia con PHP a mis espaldas, pero ahora estoy trabajando como desarrollador de Rails. Un gran desafío para la mayoría de las personas que intentan aprender algo nuevo es el proceso de aprendizaje en sí. Cuando posee cualquier lenguaje o marco y lo conoce por dentro y por fuera, no parece necesario cambiar a algo nuevo.

Sin embargo, aprender Ruby on Rails es bastante sencillo. Es un marco increíblemente poderoso que tiene una gran comunidad que lo impulsa. Entonces nuestra pregunta es: ¿cuál es la mejor manera de aprender Rails? Aquí está el plan de la lección.

Este artículo es un plan de lección completo para familiarizarse con Rails y comenzar de inmediato. Todo lo que necesita hacer es seguir los pasos a continuación, que se enumeran en orden.

Elemento 1: Trabajar con ejercicios en Try Ruby

Puede pensar que aprender Ruby es el paso más importante aquí, pero no lo es. Algunos de los que comienzan a aprender Ruby en detalle dejan de aprender y simplemente se quedan con su lenguaje y marco actuales. ¡No hagas eso!. No tengas miedo de aprender este idioma (o cualquier otro). Ruby es un lenguaje divertido, excelente y fácil de aprender. Además, no olvides que no tienes que estudiarlo al 100%. Solo necesitas saber lo básico.

La herramienta más recomendada para profundizar en la sintaxis de Ruby es el sitio TryRuby. Es un entorno interactivo que le permite probar la sintaxis en acción. si escribes ayuda, se le invitará a un tutorial de quince minutos que le enseñará los conceptos básicos. No olvides que la guía tiene dos capítulos, los cuales puedes leer tecleando ayuda 2.

Si trabaja duro en estas tareas durante algún tiempo, tendrá una buena base de conocimientos. Todo lo que hice primero fue estudiar estos dos manuales. El resto lo aprendí en el proceso de desarrollo de sitios en Rails, así como a través de Google y ejercicios con IRB.

Paso 2: Instalación de Ruby y Ruby on Rails

Si desea aprender Rails, sin duda necesitará instalarlo en su computadora. Aquí hay algunas soluciones basadas en el sistema operativo que tiene. Si tiene una computadora basada en Mac o Linux, le recomiendo que use RVM. Esta es una gran herramienta para instalar Ruby. De hecho, aquí están las instrucciones de instalación. Si tiene Windows, tendrá que usar RubyInstaller.

El siguiente paso es instalar Rails en sí. Para hacer esto, necesita instalar RubyGems. Si está utilizando RVM, felicidades, ya tiene instalado RubyGems. Si tiene Windows, le aconsejo que proceda aquí. Para instalar Rails, necesitas usar el comando rieles de instalación de gemas y, entonces, ¡ya está!

Ítem ​​3: Echa un vistazo a Introducción a Rails de Jeffrey Way


En este screencast de 40 minutos, Jeffrie Way lo guía a través de lo que necesita saber para usar Rails. Contiene mucha información útil, incluidos temas como:

  • Modelos y generadores
  • Desarrollo dirigido por pruebas (TDD)
  • Registro activo
  • RSpec y Carpincho
  • parciales
y mucho más…

Ítem ​​4: Aprende el curso de Rails for Zombies

Siempre he pensado que aprender con el ejemplo es la mejor manera de aprender un lenguaje o framework. Un curso gratuito e increíblemente poderoso que definitivamente deberías revisar es Rails For Zombies de los muchachos de EnvyLabs. Este curso es interactivo, lo que significa que después de ver cada video, trabajarás en ejercicios útiles e interesantes.

Hasta ahora, les he estado hablando de herramientas interactivas y gratuitas. ¡Se acabó el tiempo de los regalos! Ahora debe comprar un libro llamado Desarrollo web ágil con Rails. Su objetivo es enseñarle cómo usar Rails mediante la creación de un sitio web desde cero. Pasa por los conceptos básicos como controladores, modelos, andamios, pruebas funcionales y un poco de AJAX. Obtenga al menos la última edición.

Ítem ​​6: Crea un blog simple

Sé que esto suena bastante aburrido (al menos para mí), pero es un gran ejemplo que se usa en todas partes porque es bastante fácil y rápido de escribir. Siguiendo este camino, ayudarás a consolidar tus conocimientos y habilidades. Pero te sugiero que no copies y pegues (no lograrás nada con esto, excepto quizás 10 minutos de derroche de electricidad), sino que trates de escribirlo gradualmente, de memoria, a veces solo asomándote a un libro para ver cómo esto o aquello. el método funciona.

Ítem ​​7: Agregue nuevas funciones a su blog

¡Fabuloso! Todavía construiste tu propio blog. Pero aún así, no tiene una funcionalidad completa, sino que solo se presentan las funciones básicas inherentes a cada blog. Bien, trabajemos un poco y agreguemos un sistema de autenticación.

De hecho, no quiero obligarte a hacer nada difícil en este momento, porque ya has trabajado duro. Como sistema de autenticación, puede usar alguna gema ya preparada (Omniauth, por ejemplo). Al mismo tiempo, comprenderá la implementación de gemas en su proyecto.

También recomiendo ver este screencast de Ryan Bates, que describe cómo crear un sistema de autenticación simple desde cero. Después de la implementación del sistema, debe agregar la capacidad de eliminar/editar publicaciones, si aún no lo ha hecho. Si la tarea ya se completó, entonces es hora de pasar al siguiente paso.

Ítem ​​8: crea algo propio

En esta etapa, es hora de que seas más creativo y pienses en crear algún tipo de servicio (por ejemplo, alojamiento de fotos). No se detenga en el diseño de su segundo sitio web. Toma algo listo. Por ejemplo,

Hace tiempo que quería aprender Ruby on Rails en algún nivel básico. Sin propósito específico. Más bien, solo para mí, para comprender mejor qué tiene de especial (a diferencia de otras 100 500 tecnologías y marcos), que le permite crear y escalar rápidamente proyectos de Internet bastante cargados. Una razón secundaria fue el deseo de probar nuevos enfoques de aprendizaje. Cuando estaba estudiando para ser programador, solo teníamos libros y foros donde puedes pedir consejo. Ahora hay libros de texto interactivos y escuelas de programación en línea, una gran cantidad de screencasts (casi un sueño: para ver cómo codifican los gurús), bases de conocimiento como stackoverflow.com y toneladas de código fuente en GitHub, donde puedes pasar horas estudiando los códigos fuente. de auténticos profesionales. Decidí dedicar las próximas noches (y no hay tiempo durante el día) a probar nuevas formas de aprender en acción.

noche uno

Sería extraño comenzar a aprender Ruby on Rails sin al menos un conocimiento mínimo de Ruby directamente. He tomado la guía interactiva ruby-lang.org antes. Pero cuando lo pasé, inmediatamente me olvidé de todo. Sus creadores prometen que tomará quince minutos caminar y dominar la sintaxis de Ruby. Me tomó treinta. Cierto, con distracción constante en Twitter. El proceso se parece a esto. Te dicen: “Las matrices en Ruby se declaran así, y los datos se recuperan de matrices como esta. Ahora intentemos hacer una matriz y extraer N elementos de ella. Y lo comprobaremos". Lees cómo está todo arreglado e inmediatamente lo pruebas. Ruby, por supuesto, no aprenderás. Es mejor pensarlo como un curso súper rápido que funciona.

Aún así, Ruby en sí mismo está muy lejos del marco Ruby on Rails. Quería dominar los rieles. De nuestro artículo sobre educación en línea, definitivamente recordé el sensacional curso Zombie for Rails railsforzombies.org. Es como Try Ruby, un tutorial interactivo que lo inicia desde el principio para enseñarle cómo preparar aplicaciones ferroviarias. Primero, te dan una mini conferencia (en inglés, pero todo está muy claro, enciende los subtítulos) sobre la estructura de archivos de una aplicación ferroviaria, el enfoque CRUD para trabajar con datos, explica cómo se implementa el modelo MVC en rieles. , y así. Después de cada video, se le ofrece completar tareas para consolidar el material. Todo parece simple y comprensible, el curso pasa desapercibido en una o dos horas (es pequeño). ¡Pero! ¿Sentí después del curso que podía escribir una aplicación ferroviaria? ¡Lamentablemente no!

noche dos

Una de las razones por las que tras Rails for Zombies hay unos conocimientos básicos, pero no la confianza, es el entorno virtual en el que se desarrolla el entrenamiento. Por un lado, reduce al límite el umbral de entrada: no tienes que preocuparte por el medio ambiente. Por otro lado, no creas nada real en el camino, no hay un "Hola mundo" para ti al final. Y lo más importante, desde qué lado abordar su creación, no está claro. A partir de ese momento, quise probar Ruby on Rails en acción, instalarlo en el sistema (antes de eso, ni siquiera tenía que intentarlo) y crear una aplicación simple desde cero.

No recuerdo cómo, pero casi por accidente encontré un curso muy exitoso de screencasts en Russian rails.hasbrains.org. Gracias al autor por una presentación competente: explica metódicamente los principios de la aplicación ferroviaria en detalle, sumergiéndote en todas las sutilezas necesarias en el camino. En resumen, toda la segunda noche del experimento, vi la primera mitad de más de treinta episodios de estos screencasts.

La imagen finalmente se quedó en mi cabeza, cómo se genera la aplicación, cómo trabajar con la consola de rieles, cómo crear modelos y migraciones, cómo actualizar modelos y cómo validar datos en ellos, controladores RESTful, etc. Al ver cada uno de los episodios, inmediatamente probé todo en acción, creando una aplicación ferroviaria completamente funcional. Quedó claro cómo se organizan los rieles en principio.

noche tres

A la tercera noche quedaban los últimos capítulos de los screencasts, que alcancé a ver de una sentada: trabajar con rieles ya no me parecía tan descabellado. En este punto, alguien me dijo que el curso de Rails for Zombies tiene una continuación sensata y mucho más profunda. Es cierto que el curso ya está pagado y está alojado en el marco de la escuela de programación Code School www.codeschool.com. Pagar 25 dólares para tener acceso a todos los cursos de la escuela no fue una pena. Este es el costo por mes, así que si no te gusta, no olvides cancelar tu suscripción.

El curso de Rails for Zombies 2 fue realmente exitoso. Cierto, mucho fue una repetición de lo que vi en los screencasts, pero incluso fue agradable. Cinco niveles y cinco bloques de ejercicios que haces directamente en la consola interactiva. En este punto, los rieles ya parecían lógicos, comprensibles y utilizables.

En Code School, puede programar directamente en el navegador completando las tareas del curso

¿Que sigue?

¿He aprendido a hacer proyectos complejos? No. Pero definitivamente me di cuenta de los enfoques utilizados en los rieles y entendí su conveniencia. Aprendí cómo crear rápidamente aplicaciones simples y aumentar su funcionalidad en muy poco tiempo usando gemas escritas por la comunidad. Me armé de valor y sigo estudiando con gusto las mejores prácticas en los programas de Code School (ahora estoy viendo el curso de pruebas unitarias). Y estoy muy contento de que aprender tecnología se haya vuelto tan fácil.