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

Desarrolla Ruby como un Ninja

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for David Anguita 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.

Avatar for David Anguita

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