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

Desarrolla Ruby como un Ninja

David Anguita
December 11, 2013

Desarrolla Ruby como un Ninja

Notas sobre productividad en entornos de desarrollo Ruby y consejos para la dominación mundial desde línea de comandos usando Tmux, Vim y ZSH.

David Anguita

December 11, 2013
Tweet

More Decks by David Anguita

Other Decks in Technology

Transcript

  1. “DESARROLLA RUBY
    COMO UN NINJA”
    @danguita
    CiudadReal.rb

    View Slide

  2. @danguita
    CiudadReal.rb
    HOLA
    Soy David Anguita,
    desarrollador Ruby y Rails freelance

    View Slide

  3. @danguita
    CiudadReal.rb
    Casi siempre estoy ocupado y
    me obsesiona la productividad

    View Slide

  4. @danguita
    CiudadReal.rb
    • Pasamos muchas horas realizando un conjunto reducido de
    actividades
    • Nuestro trabajo es complejo, necesitamos herramientas en las
    que confiar
    • La productividad nos hará más felices (dentro y fuera del trabajo)
    • Selecciona y domina tus herramientas
    CUIDA TU ENTORNO
    DE DESARROLLO

    View Slide

  5. @danguita
    CiudadReal.rb
    COMMAND LINE IDE
    En desarrollos basados en Ruby es habitual el uso constante
    de la línea de comandos.
    Sería ideal concentrar todas las actividades en
    este interfaz.

    View Slide

  6. @danguita
    CiudadReal.rb
    COMMAND LINE IDE
    • Ligero
    • Portable
    • Compatible (*NIX, please)
    • Rápido (generalmente)
    • Menos cambios de contexto = Foco

    View Slide

  7. Tmux
    @danguita
    CiudadReal.rb
    COMMAND LINE IDE
    Shell + Multiplexor + Editor
    ZSH Vim

    View Slide

  8. @danguita
    CiudadReal.rb
    ZSH
    Shell interactivo vitaminado

    View Slide

  9. @danguita
    CiudadReal.rb
    ZSH
    • Auto-complete
    • Spelling correction
    • Globbing (matching)
    • Scriptable
    • Compatible con Bash

    View Slide

  10. @danguita
    CiudadReal.rb
    ZSH
    Oh-My-Zsh
    Distribución Zsh
    • Plugins
    • Themes
    • Community-driven
    • Permite extender la configuración inicial
    https://github.com/robbyrussell/oh-my-zsh

    View Slide

  11. @danguita
    CiudadReal.rb
    TMUX
    Multiplexor de terminal
    (como GNU Screen)

    View Slide

  12. @danguita
    CiudadReal.rb
    TMUX
    • Sessions: Instancia Tmux
    • Windows: Primer nivel de layout (tabs)
    • Panes: Segundo nivel de layout (splits)
    Window manager de nuestro IDE
    Podemos construir un layout para nuestro IDE, pero
    no es productivo configurarlo en cada ejecución

    View Slide

  13. @danguita
    CiudadReal.rb
    TMUX
    Tmuxinator
    Automatización de Tmux Sessions
    • Definimos una Session con la complejidad deseada
    (Windows, Panes y Layouts)
    • Esa complejidad se define en una estructura YAML
    • Cada archivo YAML se corresponde con un proyecto
    https://github.com/aziz/tmuxinator

    View Slide

  14. @danguita
    CiudadReal.rb
    TMUXINATOR
    name: domestika
    root: ~/work/domestika
    pre: mysql.server start
    pre_window: chruby 2.0.0
    tmux_options: -u -2
    windows:
    - editor: vim
    - shell:
    layout: even-vertical
    panes:
    - # (empty pane)
    - # (empty pane)
    - test: bundle exec guard -g test
    - console: bundle exec rails c
    - db: bundle exec rails db
    - log: bundle exec rake log:clear && tail -f log/development.log
    - server:
    layout: even-vertical
    panes:
    - bundle exec rails s -p 5070
    - elasticsearch -f -D es.config=config/elasticsearch.yml
    - redis-server /usr/local/etc/redis.conf
    - bundle exec sidekiq -C config/sidekiq.yml
    - memcached
    - vm: vagrant up

    View Slide

  15. @danguita
    CiudadReal.rb
    TMUXINATOR
    $ tmuxinator start domestika

    View Slide

  16. @danguita
    CiudadReal.rb
    VIM
    Editor de texto muy potente, no
    hay límites para la productividad

    View Slide

  17. @danguita
    CiudadReal.rb
    VIM
    • Altamente configurable
    • Muy potente (usabilidad escalable)
    • Portable
    • Compatible
    • ¿Difícil de aprender?

    View Slide

  18. @danguita
    CiudadReal.rb
    VIM

    View Slide

  19. @danguita
    CiudadReal.rb
    VIM
    La curva de aprendizaje
    no es para tanto
    En un par de semanas puedes dominar el uso elemental.
    Alcanzado ese punto, eres imparable.

    View Slide

  20. @danguita
    CiudadReal.rb
    VIM
    ¿Por dónde empezar?
    1. vimtutor
    2. “Practical Vim”, Drew Neil (The pragmatic programmers)
    3. Configuración (.vimrc)
    4. Plugins
    5. Programar sin mirar atrás

    View Slide

  21. @danguita
    CiudadReal.rb
    VIM
    Janus
    Distribución recomendable para iniciarse
    • Incluye configuración inicial, plugins y color schemes
    • Permite extender la distribución para ajustarla a nuestras
    necesidades
    • Muy útil para familiarizarse con el ecosistema Vim
    https://github.com/carlhuda/janus

    View Slide

  22. @danguita
    CiudadReal.rb
    VIM
    rails.vim
    Vim <3 Rails y viceversa
    • Plugin que incorpora comandos para la interacción con proyectos
    Ruby on Rails
    • Interfaz con rails
    • Interfaz con Rake
    • Incluido en Janus
    https://github.com/tpope/vim-rails

    View Slide

  23. Tmux
    @danguita
    CiudadReal.rb
    COMMAND LINE IDE
    Shell + Multiplexor + Editor
    ZSH Vim

    View Slide

  24. @danguita
    CiudadReal.rb
    BONUS (I)
    Vimux
    Mensajería entre Vim y Tmux
    Uso en el mundo real:
    Lanzar tests para la selección de specs en Vim, ejecutar en un
    Pane bajo el editor y observar allí el resultado
    https://github.com/benmills/vimux

    View Slide

  25. @danguita
    CiudadReal.rb
    BONUS (II)
    Automate everything
    Cuelga tus “dotfiles”
    • Es recomendable versionarlos en un repositorio (público o privado)
    • Crea un script de instalación y tendrás un entorno portable en segundos
    • Tu entorno de desarrollo puede ser tu nuevo MacBook o un servidor
    remoto ejecutando tu script

    View Slide

  26. @danguita
    CiudadReal.rb
    CONCLUSIÓN
    No significa que sea acertada para todos, pero
    merece la pena analizar si estás explotando tus herramientas
    Sólo es mi experiencia

    View Slide

  27. @danguita
    CiudadReal.rb
    GRACIAS
    por escuchar hasta aquí ;)

    View Slide

  28. @danguita
    CiudadReal.rb
    REFERENCIAS
    danguita/dotfiles
    https://github.com/danguita/dotfiles
    • vimrc.after
    • vimrc.before
    • tmux.conf
    • zshrc
    • zsh/custom/*
    • Rakefile

    View Slide