2011-03-20 12 views
17

Estoy buscando un Ruby CMS (o complemento) que pueda servir y editar contenido ubicado en un repositorio de Git. Estoy harto de tener mi contenido en un db. Usuarios, configuraciones, comentarios, bien. Pero no más contenido.¿Gestión de contenido basada en Git?

Cada edición en vivo de una página tendrá que ser comprometida de forma automática e inmediata para evitar la necesidad de una fusión en el servidor. Además, cada vez que se presionen nuevos cambios, deberán actualizarse inmediatamente en el sistema de archivos.

Refinería La documentación de CMS parece hacer algo similar, aunque quizás con un repositorio remoto.

He leído sobre GitModel y git-blog, pero todavía estoy buscando algo que coincida con mis necesidades un poco más cerca. [EDITAR: GitModel es demasiado difícil de editar manualmente cuando se usa con la mayoría de los CMS, y git-blog usa generación de archivos estáticos.]

EDITAR: Mi sesgo contra las bases de datos solo se aplica a los sitios que necesitan un alto grado de personalización, y no puede usar ningún CMS tal como está. Sitios cuyo código evoluciona tanto como su contenido. Esto es cuando tener contenido en un DB es una pesadilla total. Cuando tenga que bifurcar el contenido y el código al mismo tiempo, los combinará en la producción más adelante. Los DB no se ramifican ni se fusionan.

Tengo un sitio.

El argumento de rendimiento a favor del contenido solo de base de datos es nulo e inválido. Escribí un CMS hace 5 años que sincroniza la base de datos del sistema de archivos, donde el sistema de archivos es siempre la copia maestra. Escalaba fácilmente a 100.000 páginas, manteniendo tiempos de respuesta de 10 ms y tiempos de reindexación de 2 segundos. Índices totalmente buscables de todo el contenido, metadatos, etiquetas, fechas, etc. Y diablos, lo escribí en el marco más lento y doloroso del planeta, ASP.NET. Realmente casi hizo soportable a ASP.NET, y ha servido a varias compañías extremadamente bien, ya que tenían el mismo tipo de sitio que el mencionado anteriormente.

sitios pequeños pueden simplemente utilizar una caché en la memoria, pasando el contenido completo db

Un argumento válido para el contenido db sólo es la escalabilidad de la edición. Los editores deben usar el mismo servidor, aunque los cambios se pueden replicar hacia afuera. Pero en el caso de sitios muy personalizados y que cambian rápidamente, que cambian el código tan a menudo como el contenido, la edición distribuida/comunitaria de dicho código y contenido es poco probable. La edición comunitaria/distribuida puede usar un sistema diferente.

Hasta ahora, lo más cercano que he venido es usar Cloud9 para editar un repositorio de contenido de git (Nesta CMS), luego presiono los cambios a través de la línea de comando. Es lento, pero al menos está basado en la web en caso de que mi máquina de desarrollo no sea útil, y descubro que escribí mal mi nombre en un artículo. Todavía estamos buscando mejores opciones.

+0

¿Te gustaría hablar un poco acerca de por qué no quieres contenido en la base de datos? –

+1

"He leído sobre GitModel y git-blog, pero todavía estoy buscando algo que coincida con mis necesidades un poco más cerca". ¿Qué pasa con esas cosas que encuentras insatisfactorias? – MatrixFrog

+0

GitModel no ofrece mucha flexibilidad sobre cómo se escriben los archivos, y hace que editarlos directamente sea un poco difícil. git-blog usa generación estática, mientras que la mayoría de mi sitio contendrá una funcionalidad dinámica avanzada. –

Respuesta

-1

¿Por qué motivo desea mantener su contenido en un repositorio de git? ¿Cuál es exactamente el problema que te hace odiar tanto las bases de datos? Un DBMS está construido para lecturas y escrituras rápidas de datos, mientras que git está diseñado para la gestión de cambios. Esta es una elección arquitectónica con la que puede pegarse un tiro en el pie.

Si el problema radica en los usuarios que sobrescriben las entradas, entonces debe introducir la funcionalidad para archivar las versiones anteriores (o las diferencias de ellas) sin sobreescribirlas.Por ejemplo, la gema rails_admin hace eso

E incluso con el compromiso inmediato no escapará al problema de que un usuario abre una entrada para editarla y la mantiene durante una hora hasta que la guarda, mientras que al mismo tiempo otro usuario hace un edición rápida en 5 minutos. Aquí debe enviar desde el cliente qué revisión ha estado editando y, en caso de conflicto, mostrar una interfaz donde el usuario puede comparar sus revisiones con las realizadas por el otro usuario. O si estás avanzado, entonces puedes hacerlo de la manera google-docs. habilitar la edición simultánea.

+0

Mi sitio es un sitio de editor único. lock-on-save es suficiente. –

+2

Además, podría hacer que cada editor trabaje en su propia sucursal, luego crear una interfaz para modificar y combinar git para ayudar a fusionar los cambios entre sí. Parece que la comunidad se ha levantado y cree que el santo DBMS puede no ser siempre la mejor solución. Yo, por mi parte, digo que lo hagas. Git es una base de datos de objetos y ofrece una tonelada de ventajas para la administración de contenido en mi humilde opinión. –

0

tal vez se podría combinar un envoltorio git para la edición, etc:

https://github.com/schacon/ruby-git

con su propio código de representación basado en un sistema de almacenamiento basado en archivos simple.

No estoy tan familiarizado con Ruby, así que no puedo ayudar mucho en el lado de la renderización de ruby.

Este comentario que hace "la mayoría de mi sitio contendrá una funcionalidad dinámica avanzada" parece que va a necesitar rodar su propia solución en función de sus requisitos únicos.

1

Su solución puede ser muy confusa más adelante y puede tener más dolores de cabeza más adelante.

Aconsejo esto: (1) Use un NoSQL como MongoDB. (2) Migre todos sus datos del DB anterior. (3) Luego ponga su base de datos bajo control de versiones con. Puede hacerlo, ya que está basado en documentos y no en SQL.

Mongo tiene un excelente gema también llamada MongoId https://github.com/mongoid/mongoid

esta manera se puede utilizar un CMS que tiene la comunidad mucho más grande (como la refinería). Más aún: las copias de seguridad de base de datos fácilmente resueltos becuase usted es capaz de hacer retroceder en cualquier momento con Git o simplemente clonar su base de datos a veces, también se puede automatizar las copias de seguridad, etc.

HTH

4

Gollum (https: // github. com/github/gollum) es un wiki de Git escrito por GitHub en Sinatra. Puede empujar y tirar desde la línea de comandos o usar la interfaz web incluida para editar contenido.

Desafortunadamente, parece que GitHub tiene algo que abandona el desarrollo/mantenimiento de la misma, por lo que tiene algunas asperezas. También es muy básico, por lo que no incluye características como la autenticación [1].

Voy a utilizar Gollum con gollum-site (https://github.com/dreverri/gollum-site), un generador de archivos estáticos para Gollum, y simplemente usar Gollum como el administrador de back-end.

1: Una solución básica para la autenticación se puede encontrar en https://github.com/github/gollum/issues/107#issuecomment-2608061


También hay Regular, https://github.com/quickleft/regulate:

Rails 3 motor que proporciona una Git respaldado CMS que permite que un administrador para definir regiones editables en una vista de página.

Cuestiones relacionadas