Después de harto buscar cómo subir un blog hecho en Jekyll a Heroku, di con esta solución, que funciona y es bien simple.

Jekyll es la plataforma de blogging que usan los programadores hipsters. Está hecho en Ruby por Tom Preston. Más que una plataforma de blogging (o menos, en realidad) es un generador de páginas estáticas. Funciona increíble si lo que quieres es bloguear de vez en cuando. Puedes escribir los posts en markdown y es muy enchulable.

Para empezar, voy a asumir que tenemos instalado Ruby. Primer paso: instalar la gema de Jekyll:

$ gem install jekyll

Luego creamos una cuenta en Heroku, instalamos Heroku Toolbelt, bien simple, siguiente, siguiente, siguiente. Luego viene el login en Heroku, con el correo y password en la consola:

$ heroku login

Ahora que tenemos instalada la gema de Jekyll y Heroku, vamos a crear el blog y a cambiar de directorio:

$ jekyll new blog
$ cd blog

Después de hacer lo anterior, podemos iniciar el servidor para probar que todo salío bien.

$ jekyll serve --watch

Vamos a localhost:4000 y listo. (lo que hace el –watch, es obligar a Jekyll a hacer un rebuild de los archivos, para no tener que reiniciar el servidor cada vez que haces un cambio).

Esto debería ser suficiente como para poder empezar a utilizar Jekyll en cualquier servidor, lo que haremos nosotros, será hostearlo en Heroku, porque básicamente es gratuito.

Primero, vamos a _config.yml y agregamos esta linea al final:

exclude: ['vendor']

Luego, creamos en la raíz del directorio, un archivo llamado Procfile, así, tal cual, y dentro ponemos el siguiente código:

web: bundle exec jekyll build && bundle exec thin start -p$PORT -V
console: echo console
rake: echo rake

A continuación, creamos un Gemfile y le ponemos lo siguiente:

source 'https://rubygems.org'

gem 'jekyll', '2.4.0'
gem 'rake'
gem 'foreman'
gem 'thin'
gem 'rack-contrib'

Ahora debemos agregar nuevamente al root del proyecto, un archivo llamado config.ru con la siguiente información:

require 'rack/contrib/try_static'

use Rack::TryStatic,
    :root => "_site",
    :urls => %w[/],
    :try => ['.html', 'index.html', '/index.html']

run lambda { |env|
  return [404, {'Content-Type' => 'text/html'}, ['Not Found']]
}

Luego corremos bundle:

$ bundle

Iniciamos el repositorio en git y agregamos/commiteamos el proyecto:

$ git init
$ git add .
$ git commit -m "First commit"

Creamos la app en Heroku:

$ heroku create

Luego pusheamos el código:

$ git push heroku master

En .gitignore, agrega:

_site
.sass-cache

El directorio _site, es donde quedan los archivos generados por Jekyll (los cuales no hay que tocar nunca), estos los vamos a generar durante el deployment con el “assets:precompile” que pusimos en Rakefile*

Eso debería ser suficiente para tener andando un blog en Jekyll en Heroku.