ruby - rails - Generación de sitio web estático
como crear una pagina web estatica (6)
Esto es lo que hago:
Ruby on Rails 3 con la gema de alto voltaje , que facilita el servicio de un cuerpo de página estático utilizando las plantillas comunes. Requiere una entrada simple en las rutas (y puede usar espacios de nombres para crear una jerarquía).
Apache de proxy inverso a un pasajero independiente (que, en mi opinión, utiliza nginx) para ejecutar la aplicación Rails. Este artículo describe cómo configurarlo.
El pasajero independiente leerá la URL, verá si hay un archivo correspondiente en / public con el .html en él, y sirva eso. Si no se encuentra, invocará Rails y generará la página. En esencia, el almacenamiento en caché de la página, con la opción de publicar sus URL con o sin el .html. Hay una sección en los documentos de Passenger sobre el almacenamiento en caché de la página específicamente.
En cuanto a la combinación y la reducción de js y css, aquí hay un buen hilo de stackoverflow .
Rails tiene un excelente soporte i18n / l10n.
El motor de plantillas de rieles es muy agradable para trabajar. Y puedes usar HAML si lo prefieres.
Por tus puntos 3 y 4, estoy un poco confundido. Desea combinar css y js, pero luego desea que cada uno tenga su propia URL. En Rails, la directiva "cache => true" en las etiquetas de activos se encarga de agregar un parámetro de cadena de consulta que cambia cuando lo hace el contenido, que es un esquema bastante tradicional. No estoy seguro de en qué contexto estás trabajando, donde eso no funcionaría. Cualquier CDN que haya usado funciona bien con eso, al igual que un servidor web que implementa la especificación HTTP correctamente. De todos modos, cambiar la ruta o el archivo real en la URL requeriría cambiar todas las referencias a él. Tal vez estoy malentendido?
Necesito una forma fácil de generar páginas web estáticas para poder servirlas con Apache o Nginx. Actualmente estoy usando la herramienta de compilación de SproutCore (Abbot) para generar páginas estáticas, pero eso es un poco incómodo, ya que está diseñado para crear aplicaciones de SproutCore, no páginas HTML que no sean de SproutCore.
Aquí están mis requisitos:
- Javascript debe ser combinado y minificado
- Los archivos CSS deben ser combinados
- Cada recurso de imagen / CSS / Javascript debe tener una URL única para un mejor almacenamiento en caché (la cadena de consulta no es suficiente)
- La URL del activo debe ser diferente solo cuando realmente cambia
- Localización compatible con HTML, CSS, Javascript y archivos de imagen.
- Buen motor de plantillas con diseños, parciales, etc.
Aquí están las posibles soluciones que he encontrado:
- Cree el sitio usando Ruby on Rails, luego obtenga todos los recursos usando wget como http://usefulfor.com/ruby/2009/03/23/use-rails-to-create-a-static-site-rake-and-subversion/
- Use Middleman: middleman
Tiene alguna idea sobre esto?
Después de un largo proceso de evaluación, decidí usar Middleman. Hace el truco y me encanta su simplicidad y el hecho de que puedo usar componentes de Rack existentes con él.
Atentamente,
Pekka Mattila
Probablemente debería también pagar mod_pagespeed . Al menos te dará esto:
- Javascript debe ser combinado y minificado
- Los archivos CSS deben ser combinados
- Cada recurso de imagen / CSS / Javascript debe tener una URL única para un mejor almacenamiento en caché (la cadena de consulta no es suficiente)
- La URL del activo debe ser diferente solo cuando realmente cambia
No te dará esto:
- Localización compatible con HTML, CSS, Javascript y archivos de imagen.
- Buen motor de plantillas con diseños, parciales, etc.
Puedes echar un vistazo a docpad . Está escrito en coffeescript y se ejecuta en Nodejs . Está basado en documentos, donde usted escribe algunos documentos y diseños, los compilará y los escribirá en el directorio de salida. Puedes escribir documentos en muchos idiomas a través de plugins
También soporta múltiples niveles de compilación de archivos. Por ejemplo, de eco
a markdown
a html
.
Otra gran característica es que puede consultar otros documentos que se generan en un documento. Por ejemplo, en la primera página, tienes algo como esto para obtener todas las publicaciones del blog:
database.findAll({url : /posts/})
Que devolverá todos los documentos que tengan mensajes en su url.
Sin ningún pedido especial.
- jekyll - bastante simple
- middleman - muchas funcionalidades.
- nanoc - muchas funcionalidades
- stasis - utilizar controladores
- staticmatic
- frank
- gumdrop
- ruby sobre rieles + wget
- Ruby sobre rieles + alto voltaje + apache proxy inverso
Soy el creador de Middleman y estaría dispuesto a ayudarte a que te sientas cómodo usando Middleman. Mi objetivo principal es dar a los usuarios el poder de Rails, pero centrado en el desarrollo estático. Parte del código real de Middleman es versiones simplificadas de Ab
Monkeyman tiene el motor de plantillas que necesitas, creo. Piense en ello como el pequeño hermano Scala de Middleman. En ningún lugar tan maduro o rico en funciones todavía, pero lo lograremos con el tiempo. La encarnación actual es compatible con HAML, Jade, SSP para diseños, Markdown para contenido y un par de cosas más.