Hasta ahora habia usado Jekyll instalando el paquete desde los repositorios de Ubuntu, pero resulta que por un problema de incompatibilidad no para de dar warnings del tipo:

/usr/lib/ruby/vendor_ruby/jekyll/tags/include.rb:194: warning: Using the last argument as keyword parameters is deprecated

Y me resulta extremadamente molesto, por lo que estuve buscando alguna opción que evitara dichos mensajes. Parece que en la siguiente versión de Jekyll está corregido, pero desafortunadamente implica compilar y bueno, no me apetecía instalar las dependencias necesarias.

Se me ocurrió que podría existir una imagen de Docker y … Bingo! Con la imagen de Docker funciona y no escupe esos dichosos warnings. De esta forma iniciamos Jekyll en modo servidor:

$ docker run -ti --rm -p "4000:4000" -v "$(pwd):/srv/jekyll" jekyll/jekyll:3.8 jekyll serve

Mejorando lo mejorable

Cómo podríamos hacerlo incluso más fácil? Con nuestro viejo amigo el Makefile:

GREEN := \033[1;32m
BLUE := \033[1;34m
RESET := \033[0m

# The directory of this file
DIR := $(shell echo $(shell cd "$(shell dirname "${BASH_SOURCE[0]}" )" && pwd ))

IMAGE_NAME ?= jekyll/jekyll
IMAGE_VERSION ?= 3.8

# This will output the help for each task
# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
.PHONY: help

help: ## This help
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "${GREEN}%-30s${RESET} %s\n", $$1, $$2}' $(MAKEFILE_LIST)

.DEFAULT_GOAL := help

serve: ## Local server
	@echo "${BLUE}Server $(IMAGE_NAME):$(IMAGE_VERSION)${RESET}"
	docker run -ti --rm -p "4000:4000" -v "$(DIR):/srv/jekyll" $(IMAGE_NAME):$(IMAGE_VERSION) jekyll serve

build: ## Build site
	@echo "${BLUE}Build $(IMAGE_NAME):$(IMAGE_VERSION)${RESET}"
	docker run -ti --rm -v "$(DIR):/srv/jekyll" $(IMAGE_NAME):$(IMAGE_VERSION) jekyll build

De esta forma, para iniciar Jekyll en modo servidor simplemente tenemos que escribir:

$ make serve

Genial, verdad?