Juan David Nicholls
Open Source Contributor, Full-Stack Developer
//Obteniendo la versión
ruby -v
//Interactive Ruby Console
irb
exit
//Imprimir por consola, put string
puts 'Hello World'
//Objeto que equivale a null
nil
//Saber el tipo de un objeto
nil.class => NilClass
//Ejecutar un archivo
ruby file.rb
//https://github.com/bbatsov/ruby-style-guide
//Utilizar ; solo cuando se desea ejecutar comandos en una sola línea
//Solo utilizar paréntesis para comandos nativos
//Pensar en el hombre y no en la máquina... Código más amigable
//Variables
name = 'Nicholls' //Ruby le importa el comportamiento y no el tipo
//Id del puntador de un objeto en memoria
('abc' + 'def').object_id
//Simbolo de un objeto
:abd.object_id //Siempre retornará el mismo apuntador
//Hash
{ 'abc' => 123, :xyz => 456 }
//Interpolación de strings con comilla doble
puts "Hello #{name}!" //Solo usar comillas dobles en este caso o con caracteres especiales
//Obtener por consola
print "Please enter your name"
name = gets
//print para probar => incova el método inspect
//puts usuario final => invoca el método to_string e inserta un salto de línea
//Comillas simples
//'' => %q
print %q(Hello #{name}) //Hello #{name}
//Comillas dobles
//"" => %Q
print %Q(Hello #{name}) //Hello Nicholls
//Números como objetos
1.+(2)
1.class //Fixnum
//Cambiar la clase o.O
class Fixnum
def +(num)
8
end
end
puts 1 + 3 //8
def suma_multiplos (limite)
suma = 0
for i in 0..limite -1
if (i % 3).==(0) || (i % 5).==(0)
suma += i
end
end
suma
end
puts suma_multiplos (10)
0.== (true) // == es una función del objeto number
10_000 => 10000
{ :name => "Nicholls" }
//Es lo mismo que
{ name: "Nicholls" }
gets.chomp //almacena strings que provienen del teclado y remueve el carácter '\n'
loop do
print 'Do you want to continue? (y/n)'
answer = gets.chomp.downcase //Convirtiendo a minúsculas
if answer == 'n'
break
end
end
a = 'hola'
a.upcase! //Modifica el objeto en cuestión
print a //HOLA
random = Random.new.rand(5) //Rango hasta 5, muy amigable el lenguaje
gets.chomp.to_i //Convertir a número
name.index(/\d/) //Encontrar el índice con una expresión regular
class MyClass
def initialize(name = 'Ruby')
puts "Hello #{name}"
end
end
//Instancia la clase
MyClass.new
puts MyClass.ancestors
//Hereda de Object
puts MyClass.methods - Object.methods
string.respond_to?("upcase")
class Name
attr_reader :title
attr_writer :first_name
attr_accessor: last_name //reader and writer
def initialize(title, first_name, middle_name, last_name)
@title = title
@first_name = first_name
@middle_name = middle_name
@last_name = last_name
end
end
c = [1, 2, 3, nil, 5]
c.compact //[1, 2, 3, 5]
class Contact
attr_accessor :first_name
attr_accessor :middle_name
attr_accessor :last_name
attr_reader :full_name
def initialize(first_name, middle_name, last_name)
@first_name = first_name
@middle_name = middle_name
@last_name = last_name
end
def full_name
[first_name, middle_name, last_name].join(' ').squeeze(' ')
end
def to_s(format = 'full_name')
if respond_to? format.to_sym
send(format.to_sym)
else
'Unsupported Format'
end
end
end
nicholls = Contact.new('Juan', 'David', 'Nicholls')
puts nicholls.to_s
andrea = Contact.new('Andrea', nil, 'Urrego')
puts andrea.full_name
//Crear una aplicación
rails new todo-list
cd todo-list
bundle install
//Si sale un error modificar el archivo Gemfile
source 'https://rubygems.org' a source 'http://rubygems.org'
By Juan David Nicholls