Garantizar que todas las lecturas se hacen dentro del directorio del sitio

fixes ##2667

fixes ##2655

fixes ##2640

fixes #2675

fixes #2653

fixes #2635

fixes #2624

fixes #2626

fixes #2627

fixes #2629

fixes #2634

fixes #2636

fixes #2637

fixes #2641

fixes #2642

fixes #2643

fixes #2644

fixes #2645

fixes #2646

fixes #2648

fixes #2649

fixes #2650

fixes #2651

fixes #2654

fixes #2657

fixes #2672

fixes #2676

fixes #2677

fixes #2678

fixes #2681

fixes #2682

fixes #2687

fixes #2688

fixes #2689

fixes #2691

fixes #2692

fixes #2693
This commit is contained in:
f 2021-09-15 19:50:24 -03:00
parent c1a9aaa037
commit c601845a27

View file

@ -65,9 +65,6 @@ class Site < ApplicationRecord
accepts_nested_attributes_for :deploys, allow_destroy: true
# El sitio en Jekyll
attr_reader :jekyll
# XXX: Es importante incluir luego de los callbacks de :load_jekyll
include Site::Index
@ -180,29 +177,28 @@ class Site < ApplicationRecord
# Trae los datos del directorio _data dentro del sitio
def data
unless @jekyll.data.present?
@jekyll.reader.read_data
# Define los valores por defecto según la llave buscada
@jekyll.data.default_proc = proc do |data, key|
data[key] = case key
when 'layout' then {}
end
unless jekyll.data.present?
run_in_path do
jekyll.reader.read_data
jekyll.data['layouts'] ||= {}
end
end
@jekyll.data
jekyll.data
end
# Traer las colecciones. Todos los artículos van a estar dentro de
# colecciones.
def collections
unless @read
@jekyll.reader.read_collections
run_in_path do
jekyll.reader.read_collections
end
@read = true
end
@jekyll.collections
jekyll.collections
end
# Traer la configuración de forma modificable
@ -290,7 +286,9 @@ class Site < ApplicationRecord
#
# @return [Hash]
def theme_layouts
@jekyll.reader.read_layouts
run_in_path do
jekyll.reader.read_layouts
end
end
# Trae todos los valores disponibles para un campo
@ -332,6 +330,12 @@ class Site < ApplicationRecord
status == 'building'
end
def jekyll
run_in_path do
@jekyll ||= Jekyll::Site.new(configuration)
end
end
# Cargar el sitio Jekyll
#
# TODO: En lugar de leer todo junto de una vez, extraer la carga de
@ -345,10 +349,7 @@ class Site < ApplicationRecord
def reload_jekyll!
reset
Dir.chdir(path) do
@jekyll = Jekyll::Site.new(configuration)
end
jekyll
end
def reload
@ -526,4 +527,8 @@ class Site < ApplicationRecord
errors.add(:design_id,
I18n.t('activerecord.errors.models.site.attributes.design_id.layout_incompatible.error'))
end
def run_in_path(&block)
Dir.chdir path, &block
end
end