cuando separamos la lectura de datos de jekyll había faltado leer los
layouts para poder aplicarlos a la version preliminar. con este cambio
solo se leen cuando se los va a usar.
fixes#2006
el cambio anterior no permitía que se encolen varias compilaciones y la
versión actual pone el sitio en cola mientras se está compilando.
con este cambio el sitio se puede encolar varias veces pero el estado se
cambia una sola vez, para no abrirle la puerta a un loop infinito de
compilaciones.
lo correcto sería generar un modelo de cola con su propio estado (y
probablemente a partir de cuál commit se está compilando).
durante el proceso de compilación de jekyll se cargan todos los datos en
memoria, buscando e interpretando todos los archivos del sitio. en el
caso de sutty, solo queremos leer alguna información por vez.
trabajando en el buscador me dí cuenta que aunque el panel cargue los
posts desde la base de datos, sutty seguía leyendo la información
completa del sitio, porque respetaba el proceso de lectura de jekyll.
con este cambio podemos leer los _data/ por separado de los _posts/ con
lo que la carga del sitio es mucho más rápida.
`IndexedPost` es una representación indexada por PG de `Post`. ambos
están relacionados por el UUID de `Post`, de forma que se puede traer el
artículo completo (por ejemplo al previsualizar o editar).
cada artículo está indexado según su idioma. para eso convertimos el
locale en el equivalente en el diccionario de PG.
`Site#index_posts` es un método para indexar todos los artículos en
masa.
`Post#to_index` genera el `IndexedPost` correspondiente
`IndexedPost.search(:es, 'hola')` busca "hola" en todos los artículos
utilizando el diccionario de castellano. esto no quiere decir que
busque en todos los artículos en castellano. por ahora para eso hay que
hacer algo como:
```ruby
site = Site.find 1
site.indexed_posts.where(locale: :english).search(:en, 'hello')
```
para encontrar todos los artículos en inglés del sitio con id 1
si tenemos el panel en inglés pero gestionamos un sitio en castellano,
teníamos un error porque sutty siempre quiere cargar el sitio en el
idioma de le usuarie.
con este cambio si el sitio no tiene el idioma del panel, usamos el
idioma por defecto del sitio.
fixes#1168fixes#1164fixes#1163
ya que estamos memoizarla. el problema es que al generar las páginas,
por ejemplo en la versión preliminar, se resuelve los enlaces simbólicos
y jekyll falla diciendo que no puede encontrar los includes, porque no
están soportados en modo seguro.
se puede compilar una versión privada del sitio solo accesible a través
del panel, es decir con los mismos niveles de acceso. en combinación
con el complemento de jekyll correspondiente, sería posible ver un sitio
con otros datos que no se publican.