Compartir fragmentos de código con GIST + Sublime

Como desarrolladores, a menudo nos encontramos realizando tareas repetitivas bastante parecidas (incluso a veces idénticas) a otras que hemos realizado anteriormente. En este post explicaré cómo mantener una biblioteca con control de versiones para poder encontrar fácilmente, reutilizar y compartir fragmentos de código con todo el mundo (o con unas personas determinadas) sin alterar demasiado el flujo de trabajo habitual.

Dependiendo de su complejidad, las buenas prácticas de Drupal aconsejan utilizar features, módulos personalizados o incluso perfiles de instalación para no repetirnos innecesariamente y ahorrar mucho tiempo y minimizar errores. Pese a todo, hay veces en las que solo queremos reutilizar pequeñas partes de código que hacen una funcionalidad muy pequeña o un efecto muy concreto y no vale la pena (o incluso es imposible) crear un módulo para ello. Este es el escenario perfecto en el que administrar una biblioteca de fragmentos de código puede sernos útil. Aunque es probable que ya tengamos nuestra propia biblioteca de código, eso no es suficiente si queremos compartirla con otros miembros del equipo o con la comunidad. Una manera de solucionarlo es  utilizar dos herramientas bien conocidas: Sublime text y los Gist de Github.

Instalar y configurar el paquete Gist en Sublime

Estas instrucciones asumen que ya tenemos instalado Sublime Editor y que ya tenemos una cuenta de usuario en Github. Si todavía no has hecho alguna de estas cosas hay muchos motivos para utilizar estas herramientas (de verdad) y hay mucha documentación sobre cómo hacerlo (al final del documento encontrarás algunos enlaces interesantes al respecto).

  1. Instalar Package Control para Sublime Editor, que es un gestor de paquetes que facilita mucho la tarea de encontrar, instalar y actualizar paquetes dentro de Sublime. Para instalarlo basta con abrir la consola de sublime (ctrl+`) y pegar el código proporcionado en la web oficial, que además también incluye instrucciones más detalladas: https://sublime.wbond.net/installation
  2. Instalar el paquete Gist package utilizando Package Control. Deberemos ejecutar la Command Pallete mediante la combinación de teclas ctrl+shift+p (Win, Linux) o cmd+shift+p (OS X) y escribir el nombre del paquete.
  3. Configurar el plugin de Gist para enlazarlo a nuestro usuario de Github.
    1. Acceder a nuestra cuenta de Github y generar el token que se usará para el paquete Gist.
      Puedes hacerlo haciendo clic en el enlace https://github.com/settings/applications y además, Github tiene una documentación muy ampliada sobre este aspecto en esta pàgina.
    2. Abrir el archivo de configuración del plugin GIST y pegar el token que hemos creado en el paso anterior. Este archivo se abre automáticamente la primera vez que queramos ejecutar un comando desde la Command Pallete o puede encontrarse en el siguiente menú: Preferences/Package Control/Gist.
    3. (Opcional) Rellenar el resto de configuraciones opcionales que proporciona el plugin, todas ellas detalladas en este documento.

Utilizar el paquete Gist

El paquete Gist proporciona una serie de opciones a las que podemos acceder a través de la Command Pallete. El nombre de todas es auto-explicativo pero las siguientes son las más utilizadas:

  1. Insert a gist: muestra una lista de todos los gists de tu cuenta e inserta el contenido del gist seleccionado allí donde tengas el cursor.
  2. Open a gist: muestra una lista de todos los gists de tu cuenta y abre el archivo o archivos que contiene el gist en una o más pestañas, lo cual permite editarlos y actualizarlos (ver a continuación).
  3. Update a gist: actualiza el gist actual y hace push con los cambios al repositorio de gist.
  4. Create a private gist: crea un gist que solo será accesible por su creador y cualquier persona que tenga su url.
  5. Create a public gist: crea un gist público que puede ser visto, copiado, modificado y comentado por todo el mundo.
  6. Add a file into gist: añade el archivo que tengamos abierto y seleccionado como activo a un gist existente (recordemos que un gist puede contener uno o varios archivos).

Utilitar el paquete de Gist es sencillo: basta llamarlo desde la Command Pallete y después seleccionar la opción deseada (Consejo: la mayoría de opciones proporcionan su atajo de teclado).

Editar, compartir y comentar fragmentos de código en Gist

Puede que sea un poco tarde para explicar esto ahora, pero los Gist son básicamente pequeños repositorios con una breve descripción que idealmente debería contener un archivo con un fragmento de código, aunque hay escenarios que requieren de varios de ellos. Las descripciones son muy importantes ya que son la única manera que tenemos para buscar (y encontrar) un gist en nuestro perfil o de entre los contribuidos por la comunidad. Eso quiere decir que la descripción debe ser realmente explicativa del contenido o tendremos problemas de verdad para encontrar nuestros propios códigos en el futuro (Consejo: podemos usar la # para marcar gists). Cada usuario tiene su propia página que muestra sus gists públicos (esta, por ejemplo: https://gist.github.com/ccamara) y también existe una página que muestra todos los gists públicos https://gist.github.com/discover/ que podemos usar.

Dado que se trata de un servicio basado en git, también tiene otras características interesantes:

  1. Posibilidad de marcar, observar o hacer fork de cualquier gist.
  2. Posibilidad de comentar cada gist.
  3. Posibilidad de clonar tu propio repositorio y trabajar en local con tus herramientas habituales, sin alterar demasiado tu flujo de trabajo habitual.
  4. Posibilidad de editar gists desde el sitio web.
  5. Posibilidad de insertar un gist en otra página, de forma que si alguna vez hay un cambio en el gist, sus modificaciones se mostrarán automáticamente, teniendo el gist siempre actualizado.

Bonus: motivos para usar Sublime text:

Pros: Bien documentado, multiplataforma, ligero, arquitectura extensible, comunidad y gran cantidad de plugins contribuidos, rapidez (multitud de atajos de teclado y comandos utilizando la Command Pallete)...

Contras: No es opensource, no proporciona herramientas para debugar, no está pensado para OOP.

Si no conocías Sublime text o no lo utilizas, quizá te interese leer los artículos siguientes: