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