Siguiente:
Introduccion
Subir:
Apuntes de RUBY
Anterior:
Go
Índice General
Índice de Materias
EL LENGUAJE DE PROGRAMACIÓN RUBY
Subsecciones
Introduccion
Primeros Pasos
irb
pry
Donde Encontrar Ruby y Como Instalarlo
Donde esta Ruby en Nuestra Máquina
RVM
Ejecución de un Programa Ruby
Ejercicio: Calcule el Factorial de un Número
Lints in Ruby: rubocop, reek, etc.
Ejecución de un Programa con el Depurador
Averiguando que tiempo hace
Ejercicios: Expresiones Regulares. Un programa que convierte de Celsius a Farenheit
Ejercicio: Excepciones y Expresiones Regulares. Pasar de Hexadecimal a Decimal
Bloques/Blocks
El método gets
Práctica: Producto y Suma de Matrices
Sugerencias
Práctica: Evaluar una Expresión en Postfijo
Pistas
Práctica: Traducción de notación infija a postfijo
Ejercicios
Ejemplo en Ruby: Accediendo a Twitter
Práctica: Contar la Popularidad de Nuestros Amigos en Twitter
Véase También
Resolviendo Sudokus
La Estructura y Ejecución de los Programas Ruby
Estructura Léxica
Estructura Sintáctica
Estructura de Fichero
Codificación de un Programa
Ejecución de un Programa
Práctica: Descarga Páginas de la Wikipedia
Práctica: Tweet Fetching
Práctica: SQL An introduction to relational databases and their query languages
Tipos de Datos y Objetos
Números
Constantes Racionales en Ruby 2.1
Texto
Arrays
Hashes
Rangos
Símbolos
Booleanos y Nil
Véase También
Objetos
Referencias a Objetos
Valores Inmediatos
Vida de un Objeto
Identidad de un Objeto
Clase y Tipo de un Objeto. Polimorfismo
Igualdad de Objetos
El método
equal?
El operador
==
El método
eql?
El operador
===
El operador
=˜
Orden en Objetos
Conversión de Objetos
Copia de Objetos
Marshalling
Marshalling Datos entre Procesos que se Comunican
Ejercicios
Marshalling con YAML
Marshalling con PStore
Marshalling Lambdas y Procs
Práctica: Procesos Concurrentes
Freezing: Congelando Objetos
Objetos Manchados: Tainting
Congelación: freezing
Ejercicios
Ejercicios
Práctica: Ordenar por Calificaciones
Ejercicios
Ejercicios
Expresiones y Operadores
Literales y Palabras Reservadas
Variables
Variables No Inicializadas
Constantes
Invocación de Métodos
Asignaciones
Asignación a Variables
Asignación a Constantes
Asignación a Atributos y a Elementos de Arrays
Asignaciones Abreviadas
Asignaciones Paralelas
Operadores
+ y - Unario
Exponenciación
Operadores Binarios
Shift y Append
Complemento, Unión e Intersección
Comparación
Igualdad
Operadores Lógicos
Rangos y Flip-Flops
Flip-Flops Lógicos
Condicional
?
Operadores de Asignación
El Operador
defined?
Modificadores de Sentencias (Sufijos)
Símbolos de Puntuación que no son Operadores
Sentencias y Estructuras de Control
Condicionales
Bucles
Iteradores y Objetos Enumerables
Enumeradores
Bloques
Alterando el Flujo de Control
throw y catch son Sentencias de Control
Manejo de Excepciones
BEGIN y END
Threads, Fibras y Continuaciones
Fibras
Threads
Práctica: Reto Dropbox. El Problema de la Dieta
Métodos, Procs, Lambdas y Clausuras
Definiendo Métodos Simples
Valor Retornado por un Método
Métodos y Manejo de Excepciones
Invocando un Método en un Objeto
Definiendo Métodos Singleton
Borrando (Undefining) Métodos
Nombres de Métodos
Métodos Operadores
Alias de Métodos
Métodos y Paréntesis
Argumentos de un Método
Parámetros por Defecto
Listas de Argumentos de Longitud Variable y Arrays
Pasando Arrays a Métodos que Esperan una Lista de Argumentos
Los Enumeradores son Splattables
Asignando Argumentos a los Parámetros
Hashes para Argumentos con Nombre
Parámetros con Nombre. Named Parameters in Ruby 2.0
Argumentos Bloque
LLamada con Paso de Objetos
Proc
de Forma Explícita
Los Argumentos Bloque Prefijados con & Deben Ser los Últimos
Utilizando & en la Invocación de Métodos
Procs y Lambdas
Creacion de
Proc
s
Asociando un bloque con argumento prefijado por &
Proc
.new
Kernel.lambda
Kernel.proc
Lambda Literals
Invocación de
Proc
s y Lambdas
La Aridad de un
Proc
Igualdad de
Proc
s
En que Forma las Lambdas Difieren de los
Proc
s
Return en bloques, procs y lambdas
Break en bloques, procs y lambdas
Otras sentencias de control en bloques, procs y lambdas
Paso de argumentos en procs y lambdas
Enumeradores
Bloques para las Transacciones
Ejemplo: La Clase
Filter
Clausuras
Clausuras y Variables Compartidas
Clausuras y Bindings
Repaso
Objetos
Method
Objetos
Method
no Ligados (Unbound Method Objects)
Programación Funcional
Aplicando una Función a un Enumerable
Composición de Funciones
Aplicación Parcial de Funciones
Práctica: Aplicación Parcial
Memoización
Símbolos, Métodos y Procs
to_proc
Accediendo a una Clase como una Colección de Métodos
Viendo los (Nombres de) Métodos como Colecciones de Objetos
Véase También
Práctica: La Calculadora
Ejercicios
Práctica: Un Motor para las Expresiones Regulares en Pocas Líneas
Clases y Módulos
Definición de una Clase Simple
Creando una Clase
Instanciando un Punto
Inicializando un Punto
Definiendo un método
to_s
Acceso a los Atributos
Definiendo Operadores (La Clase Point)
Tabla de Operadores en Ruby
Polimorfismo, Comprobación de Tipos y Tipado Pato (Duck Typing)
Coerción
Acceso a Arrays y a Hashes
Enumeración de Coordenadas
Igualdad de Puntos
eql?
y las Claves de un hash
Ordenando Puntos
Un Punto Mutable
Creando Clases con
Struct
Un Método de Clase
Constantes
Variables de Clase. Atributos de la Clase
Variables de Instancia de Clase
Práctica: La Clase Punto del Plano
Visibilidad de los métodos: Público, Privado, Protegido
Ejemplo de Visibilidad de Métodos Protegidos
Ejemplo de Visibilidad
Subclases y Herencia
Heredando Métodos
super
Predominancia/Invalidación de Métodos (overriding)
Predominancia de Métodos Privados
Aumentando la Conducta Mediante Encadenamiento
Herencia y Métodos de Clase
Herencia y Variables de la Instancia
Herencia y Variables de Clase y Variables de Instancia de una Clase
Herencia y Constantes
Averiguando los Descendientes de una Clase (descendants)
Delegación
Creación e Inicialización de Objetos
new, allocate e initialize
Métodos Factoría
dup, clone e initialize_copy
Limitando el Número de Instancias de una Clase
Métodos y Clases: Construyendo un Iterador
Práctica: Conjuntos
Módulos
Los Módulos como Espacios de Nombres
Ejemplo Simple
Ejemplo: Codificar y Decodificar Datos Usando Base64
Espacios de Nombres Anidados
Los Módulos como Mixins
Variables de Instancia en Mixins
Colisiones
Composición frente a Herencia/Composition versus Inheritance
extend
Ejemplo
Módulos Espacio de Nombres Incluíbles
Prepend
Carga y Solicitud de Módulos
El Camino de Búsqueda
Ejecutando Código Cargado
Envolviendo una Carga
Autoloading de Módulos
Práctica: Matrices
Práctica: Matrices Dispersas
Los Métodos Singleton y la Singleton Class o Eigenclass
La Búsqueda por Métodos de Instancia
Búsqueda de Métodos de Clase
La Búsqueda de Constantes
Véase
Jugador de TicTacToe (Tres en Raya)
Ejemplo de Partida
Programa Principal
La Clase Game
La Clase Player: Un Ejemplo de
Strategy Pattern
La Clase Board
La Clase Row
Código Completo del TicTacToe
Reflexión y Metaprogramación
Tipos, Clases y Módulos
Antepasados y Módulos
El método
extend
de la clase
Object
El Método
nesting
de la clase
Module
Definiendo Clases y Módulos
Ambitos y los métodos
Class
.new,
Module
.new,
define_method
Evaluando Strings y Bloques
Bindings (encarpetados) y eval
Procs y Bindings
instance_eval y class_eval
Creando accessors con class_eval
instance_exec y class_exec
Variables y Constantes
Buscando, Dando Valores y Suprimiendo Variables y Constantes
Métodos
Listando y Comprobando Métodos
Obteniendo los Métodos de Objetos
Llamando a los Métodos Dinámicamente
send: Rendimiento/Benchmark
Definiendo, Suprimiendo y Haciendo Alias de Métodos
Definiendo Métodos con define_method
Manejando Métodos No Definidos: method_missing
Ejercicios
Hooks (Ganchos)
El Hook
inherited
El Hook
included
Incluyendo Métodos de Instancia y de Clase de un Módulo
Ganchos/Hooks: Sustituyendo (y delegando en) un método existente
Ganchos/Hooks: Interviniendo en el Momento en que un Objeto es Creado
Traza
set_trace_func
caller
Los Módulos ObjectSpace y GC
Estructuras de Control a la Carta
Creando una
Palabra Clave
Métodos Missing y Constantes Missing
Creando Dinámicamente los Métodos dentro de method_missing
Creando Métodos Dinámicamente
Definiendo Métodos con
class_eval
Definiendo Métodos con
define_method
Encadenamiento de Alias
Lenguajes de Dominio Específico. Domain Specific Languages. DSL
Un Lenguaje de Dominio Específico para Describir Recetas de Cocina
Un DSL para Procesar Documentos XML usando
instance_eval
Dos DSLs: Generando XML con Validación via Generación de Métodos
Creando un ORM
Práctica: DSL: Redacción de Cuestionarios I (Sin Contexto)
Práctica: DSL: Redacción de Cuestionarios II (Con Contexto)
Práctica: HTML DSL
Práctica: HTML DSL con Git y Rake
Repaso
Repaso
Repaso
Referencias. Véase También
Pruebas Unitarias
Test/Unit
Ejemplo Sencillo de uso de
test/unit
Cuando una assertion falla
Organizando las pruebas
Setup y Teardown
Veáse
Minitest
Pruebas. Test Driven Development (TDD) y Rspec
Introducción
0: Red
1: Green
2: Red
3: Green
4: refactor
5: Red: should and should_not
6: Green
7: un poco mas tarde ...
rspec opciones
Resumen y Enlaces
Pruebas. Capybara y Cucumber
Introduccion
Usando Capybara Directamente
Usando la Sesión Directamente
Usando Capybara Directamente Incluyendo el Módulo
Capybara::DSL
Aprendiendo Capybara con Ficheros HTML Locales
Ejemplo de uso de Capybara, RSpec y Cucumber con una Aplicación Web Externa
Poltergeist
Capybara y Rack::Test
Testeando una Aplicación Sinatra
Testing con Rack::Test y Cucumber
La API de Capybara
Búsqueda de Elementos HTML
Clicks en Botones y Enlaces
Envío de Formularios
Checkboxes y Radio Buttons
Cargando un Fichero /File Upload
Buscadores/Finders, Ámbito/Scope y Coincidencias/Matches Múltiples
Múltiples Coincidencias/Multiple Matches
Visibilidad
Ambito
Véase
Pruebas. Other Testing tools
Integración Contínua: Travis
Uso de Travis
Enlaces
Notificaciones/Notifications
Limites de Timepo/Build Timeouts
Databases and other services
Travis en la Línea de Comandos
Coveralls: Análisis de Cubrimiento
Guard
Programación Orientada a Eventos
Introducción a Programación Orientada a Eventos
Building our own I/O Event Loop
EventMachine
Un server
Deferrable
Véase
Véase
Programación distribuída/Distributed Programming
DRb
Distributed Ruby and SSH: drbssh
Actores
Celluloid
DCell
El Problema de los Filósosofos Comensales / The Dining Philosophers Problem
Véase
Threads
Enlaces /Véase
Creación de Threads
Exclusión Mutua y la Clase
Mutex
Threads y Sockets
Un Chat Usando Threads y Sockets
Un Servidor Multithreaded (and a Client)
Colas
Condition Variables/Variables Condición
El Problema de los Filósosofos Comensales / The Dining Philosophers Problem
Juegos con Gosu
Enlaces
El Juego de la Vida
Starfighter
Random bouncy particles using ruby Gosu games library
Shoes
herramientas para el Control de la Calidad
Lints: rubcop y reek
Véase
La Plataforma Ruby
Unicode
Expresiones Regulares
El Entorno Ruby
Invocando al intérprete Ruby
El Entorno al Nivel mas Alto
Atajos para la Extracción e Informes (Tipo Perl)
LLamando al Sistema Operativo
Seguridad
El Compilador de Ruby
Casiano Rodriguez León 2015-01-07