parche para subdir en layouts

5 views
Skip to first unread message

Arnau Siches

unread,
Mar 15, 2008, 3:48:44 PM3/15/08
to nano...@googlegroups.com
Hola,

Para quien no pueda aguantar a la 2.1. El parche al que se refería Ale:

Receta:

1. Localizar la instalación de nanoc (en un Leopard está en
/Library/Ruby/Gems/1.8/gems/nanoc-2.0.2/lib/nanoc/)

2. Abrir el fichero "enhancements.rb" dentro del directorio "base"
3. Ir a la línea 27 y añadir:

if name.include?('/')
name = name.split("/").last
end

justo _antes_ de la línea

layout = @site.layouts.find { |l| l[:name] == name }

4. Abrir el fichero "filesystem.rb" dentro del directorio "data_sources"
6. Ir a la línea 155 y sustituirla por:
Dir["layouts/**/**.*"].reject { |f| f =~ /~$/ }.map do |filename|


Con estas modificaciones es posible tener ficheros de layout en un
subdirectorio. P.ej.

- layouts/
-- default.erb
-- inc/
--- fichero.erb


de esta forma es posible tener un poco más organizados los fragmentos a
usar con "render" ( <%= render "inc/fichero" %> )

Limitaciones:

"render" sólo identifica el nombre de fichero es decir, no le importa un
carajo el path. Por lo tanto si se diera el caso de:

- layouts/
-- default.erb
-- inc/
--- fichero.erb
-- zoo/
--- fichero.erb

Al hacer <%= render "zoo/fichero.erb" %>

nanoc aplicaría el primer "fichero.erb" encontrado, o sea "inc/fichero.erb"


Y nada más. Aprovecho esta oportunidad para dar otra vez las grácias a
Ale y para saludar a mi família. Hola mamá!

--
arnau siches
css.artnau.com

Ale Muñoz

unread,
Mar 15, 2008, 5:04:16 PM3/15/08
to nanoc-es
Pregunta:

¿Tiene sentido enviar el parche al autor de nanoc por si quiere sacar
una 2.0.3, o mejor esperamos a la 2.1 a ver si el nuevo sistema de
layouts mola más que el de ahora?

Votaciones, please :)


--
Ale Muñoz
http://sofanaranja.com
http://bomberstudios.com

Arnau Siches

unread,
Mar 15, 2008, 5:28:12 PM3/15/08
to nano...@googlegroups.com
Ale Muñoz wrote:
> Pregunta:
>
> ¿Tiene sentido enviar el parche al autor de nanoc por si quiere sacar
> una 2.0.3, o mejor esperamos a la 2.1 a ver si el nuevo sistema de
> layouts mola más que el de ahora?
>
> Votaciones, please :)

vote:for:patch

--
arnau siches
css.artnau.com

Choan Gálvez

unread,
Mar 15, 2008, 6:12:48 PM3/15/08
to nano...@googlegroups.com
On 15/03/2008, at 22:04, Ale Muñoz wrote:

> Pregunta:
>
> ¿Tiene sentido enviar el parche al autor de nanoc por si quiere sacar
> una 2.0.3, o mejor esperamos a la 2.1 a ver si el nuevo sistema de
> layouts mola más que el de ahora?

¿Lo de que no tenga en cuenta directorios es inevitable?

¿Qué sabes del nuevo sistema de layouts? Por lo que he visto en
tickets, el único cambio es que el filtro (o filtros) para el layout
no dependerá de la extensión del fichero de layout, sino de lo
especificado en el .yaml que hará pareja con él (vaya, lo mismo que
en contenidos). ¿Hay alguna novedad más reflejada en el código?

> Votaciones, please :)

vote:for:patch

Salud.
--
Choan Gálvez
<choan....@gmail.com>
<http://choangalvez.nom.es/>


Ale Muñoz

unread,
Mar 15, 2008, 6:31:42 PM3/15/08
to nano...@googlegroups.com
Voy a mirar el código con tranquilidad y os cuento algo.

En cualquier caso, veo que el colega está preparando una 2.0.3, así
que voy a ver si me da tiempo a corregir el bug con los nombres de
layout iguales en directorios distintos y entra en la próxima release
: )

Ale Muñoz

unread,
Mar 15, 2008, 7:08:26 PM3/15/08
to nano...@googlegroups.com
Por si alguien se siente aventuroso:

http://nanoc.stoneship.org/trac/attachment/ticket/14/nanoc_2.0_allow_layouts_in_subdirs.diff

El parche es un poco más elegante que el original (sólo parchea una
línea de un fichero) y añade soporte para layouts en subdirectorios
sin los problemas del primer parche.

Le he mandado un mail a Denis a ver si lo incluye en la 2.0.3 (y de
paso le he preguntado que para qué sirve el nuevo sistema de layouts,
a ver si nos enteramos de qué problema resuelve : )

Arnau Siches

unread,
Mar 15, 2008, 7:39:05 PM3/15/08
to nano...@googlegroups.com
Ale Muñoz wrote:
> Por si alguien se siente aventuroso:
>
> http://nanoc.stoneship.org/trac/attachment/ticket/14/nanoc_2.0_allow_layouts_in_subdirs.diff
>
> El parche es un poco más elegante que el original (sólo parchea una
> línea de un fichero) y añade soporte para layouts en subdirectorios
> sin los problemas del primer parche.

Probado con una estructura tal que:

- layouts/
-- default.erb
-- inc/

--- header.erb
--- zinc/
---- header.erb
-- zoo/
--- header.erb

y ha compilado cada vez el "header.erb" que le he indicado.
aparentemente todo perfecto.

--
arnau siches
css.artnau.com

Ale Muñoz

unread,
Mar 16, 2008, 10:20:10 AM3/16/08
to nano...@googlegroups.com
Denis me confirma que el parche entrará en la 2.1 (la 2.0.3 es una
release de bugfixing, que arregla entre otras cosas el problema que
hay con el autocompile y las páginas con custom_path :) y que
convivirá con el nuevo sistema de plantillas.

La lógica para el nuevo sistema es:

- consistencia con el sistema de páginas
- posibilidad de especificar qué filtro usará un layout
independientemente de la extensión (algo útil, por ejemplo, si usas
un data_source que venga de una base de datos, donde lógicamente no
hay ni ficheros ni extensiones)

En cualquier caso, me comenta que el actual sistema de ficheros no le
acaba de entusiasmar, y que posiblemente se migre a un sistema
parecido al de Webby[1], donde los metadatos de las páginas y los
layouts están *en* el contenido de cada fichero.

Por cierto, Webby tiene muy buena pinta, y parece que nanoc va a
fusilarle alguna que otra feature :)


[1]: http://webby.rubyforge.org/

jorge.correa

unread,
Mar 16, 2008, 3:17:12 PM3/16/08
to nano...@googlegroups.com
Hi there,

quería saber qué tareas de rake estáis usando, por aquello de
optimizar el currele exprimiendo la vagancia al máximo.

yo estoy tirando de las más básicas, las que más uso, pero seguro que
se puede completar con otras tantas:

-----

desc "compila el código"
task :compile do
%x(cd code; nanoc compile)
end

desc "Sube archivos al servidor y notifica con Growl"
task :upload do
%x(ftp -u user:pass...@ftp.servidor.com/ruta/ output/*)
%x(growlnotify --name Rake -m 'Upload completado' 'nanoc')
end

desc "limpia el código HTML"
task :tidy do
Dir["code/output/**/*.html"].each do |file|
%x(tidy -i -asxhtml -utf8 -raw -modify -wrap 10000 #{file})
end
end

desc "Prueba el site por defecto usando heel"
task :heel do
%x(heel -r code/output -a 0.0.0.0)
end

-----

mi tarea por defecto:
task :default => [:compile, :tidy, :heel]

-----

¿cual es vuestro rakefile por defecto?

jorge.correa
jorge....@gmail.com
http://jcorrea.es


Reply all
Reply to author
Forward
0 new messages