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
vote:for:patch
--
arnau siches
css.artnau.com
> 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/>
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
: )
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 : )
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
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/
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