Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

@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

Slide 5

Slide 5 text

@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.

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

@danguita CiudadReal.rb ZSH Shell interactivo vitaminado

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

@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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

@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

Slide 13

Slide 13 text

@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

Slide 14

Slide 14 text

@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

Slide 15

Slide 15 text

@danguita CiudadReal.rb TMUXINATOR $ tmuxinator start domestika

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

@danguita CiudadReal.rb VIM

Slide 19

Slide 19 text

@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.

Slide 20

Slide 20 text

@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

Slide 21

Slide 21 text

@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

Slide 22

Slide 22 text

@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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

@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

Slide 25

Slide 25 text

@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

Slide 26

Slide 26 text

@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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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