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

    Compatible (*NIX, please) • Rápido (generalmente) • Menos cambios de contexto = Foco
  4. @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
  5. @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
  6. @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
  7. @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
  8. @danguita CiudadReal.rb VIM • Altamente configurable • Muy potente (usabilidad

    escalable) • Portable • Compatible • ¿Difícil de aprender?
  9. @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.
  10. @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
  11. @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
  12. @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
  13. @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
  14. @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
  15. @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