Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Por que Ruby?

Por que Ruby?

Descripción básica de las características, filosofía y herramientas de Ruby

Avatar for Jesus Sayar

Jesus Sayar

October 04, 2013

Other Decks in Programming

Transcript

  1. About me Web Developer - Backend @jsayar jesus-sayar #ruby #rails

    #HTML5 #Node #NoSQL #iOS #Git #OpenSource #MongoDB #TDD #Redis
  2. Es un lenguaje de programación dinamico enfocado en la simplicidad

    y la productividad. Su sintaxis es elegante y su libreria standard tiene una API rica y poderosa 1
  3. Toma inspiración de Lisp, Smalltalk y Perl, Eiffel y Ada,

    creando un lenguaje que fusiona la programación funcional y la programación imperativa 2
  4. Es un lenguaje puramente orientado a objetos. Herencia y mixin

    como mecanismos de reutilización de codigo. 3
  5. puts 1.succ # => 2 puts "hello".upcase # => HELLO

    o = Object.new puts o.class.name # => Object object_class = o.class puts object_class.class.name # => Class puts object_class.ancestors # => Class # Object # Kernel # BasicObject Orientacion a Objetos
  6. p = Person.new('Jesus') puts p.name # => Jesus def initialize(name)

    @name = name end def name @name end class Person end Orientacion a Objetos
  7. class Person end class User < Person include Greeter end

    module Greeter def say_hello puts 'Hello' end end u = User.new u.say_hello # => Hello Mixin
  8. func = ->(param) do puts param end [1,2,3,4,5].each(&func) # =>

    1 2 3 4 5 # Pasar un bloque a un metodo en linea [1,2,3,4,5].each do |num| puts num end # => 1 2 3 4 5 Blocks
  9. # Monkey Patching class Fixnum def to_roman 'I' * self

    end end puts 1.to_roman puts 2.to_roman puts 3.to_roman # => I # II # III Metaprogramming
  10. class A def initialize @calls = [] end def calls

    @calls end def method_missing(name, *args) @calls << name end end a = A.new a.someting a.foo a.bar a.someting_else puts a.calls # => someting # foo # bar # someting_else Metaprogramming
  11. Filosofia • The Human Factor • Principle of Least Surprise

    • Freedom and Comfort • The Joy of Ruby
  12. irb • Interactive Ruby Shell • Interprete de comandos de

    Ruby $ irb $ > 2+5 => 7 $ > ‘Hi’ * 3 => ‘Hi Hi Hi’
  13. Rvm • Gestor de implementaciones de Ruby. • Gestionar librerias

    de gemas ‘gemsets’ $ rvm list known $ rvm install ruby-2.0.0 $ rvm use ruby-2.0.0 $ rvm gemset list $ rvm gemset create my_app $ rvm gemset use my_app
  14. Bundler • En Ruby las librerias se llaman gemas ‘Ruby

    Gems’ • Las gemas están disponibles en repositorios. • Bundler permite gestinar las gemas facilmente. $ gem install haml $ rvm uninstall haml source 'https://rubygems.org' gem "carrierwave", "~> 0.8.0" gem "state_machine", "~> 1.2.0" Gemfile
  15. Testing • No compilamos • Arreglar errores y prevenir regresiones

    • Mejorar el diseño • Documentar el comportamiento • RSpec, Cucumber, Capybara, Factory Girl... • Es divertido :-)
  16. TDD RED GREEN REFACTOR 1 2 3 Testing como herramienta

    de diseño de software. El codigo sigue un proceso emergente dirigido por las pruebas.
  17. BDD Característica: Suma En orden ha evitar herrores ridiculos Como

    un idiota en matematicas Yo quiero decir la suma de dos numeros Escenario: Suma de dos numeros Dado que he tecleado 50 en la calculadora Y he tecleado 70 en la calculadora Cuando presiona sumar Entonces el resultado en la pantalla deber ser 120 • Behaviour Driven Development • Historias de usuario, tests de aceptación