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

Desarrolla Ruby como un Ninja

Cd2e3ba306d19910a2900955667317ee?s=47 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.

Cd2e3ba306d19910a2900955667317ee?s=128

David Anguita

December 11, 2013
Tweet

Transcript

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

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

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

    productividad
  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
  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.
  6. @danguita CiudadReal.rb COMMAND LINE IDE • Ligero • Portable •

    Compatible (*NIX, please) • Rápido (generalmente) • Menos cambios de contexto = Foco
  7. Tmux @danguita CiudadReal.rb COMMAND LINE IDE Shell + Multiplexor +

    Editor ZSH Vim
  8. @danguita CiudadReal.rb ZSH Shell interactivo vitaminado

  9. @danguita CiudadReal.rb ZSH • Auto-complete • Spelling correction • Globbing

    (matching) • Scriptable • Compatible con Bash
  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
  11. @danguita CiudadReal.rb TMUX Multiplexor de terminal (como GNU Screen)

  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
  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
  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
  15. @danguita CiudadReal.rb TMUXINATOR $ tmuxinator start domestika

  16. @danguita CiudadReal.rb VIM Editor de texto muy potente, no hay

    límites para la productividad
  17. @danguita CiudadReal.rb VIM • Altamente configurable • Muy potente (usabilidad

    escalable) • Portable • Compatible • ¿Difícil de aprender?
  18. @danguita CiudadReal.rb VIM

  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.
  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
  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
  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
  23. Tmux @danguita CiudadReal.rb COMMAND LINE IDE Shell + Multiplexor +

    Editor ZSH Vim
  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
  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
  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
  27. @danguita CiudadReal.rb GRACIAS por escuchar hasta aquí ;)

  28. @danguita CiudadReal.rb REFERENCIAS danguita/dotfiles https://github.com/danguita/dotfiles • vimrc.after • vimrc.before •

    tmux.conf • zshrc • zsh/custom/* • Rakefile