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
|
||||
|
||||
# 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
|
||||
|
|
Loading…
Reference in a new issue