Skip to content

Instantly share code, notes, and snippets.

@GBH
Created January 10, 2018 21:09
Show Gist options
  • Save GBH/4482cea948d3c0b9a6ed0888c2e288dc to your computer and use it in GitHub Desktop.
Save GBH/4482cea948d3c0b9a6ed0888c2e288dc to your computer and use it in GitHub Desktop.
{{Infobox software
| name = ComfortableMexicanSofa
| developer = Oleg Khabarov
| released = {{release date|2010|10|13}}
| latest_release_version = <!-- If you update this, remember to also update [[List of content management systems]]--> 2.0.7<ref name="comfortable_mexican_sofa_release">https://rubygems.org/gems/comfortable_mexican_sofa/versions/2.0.7</ref>
| latest_release_date = {{release date|2017|12|24}}
| status = Active
| operating_system = [[Cross-platform]]
| platform = [[Ruby on Rails]]
| genre = [[Content management system]]
| license = [[MIT License|MIT]]
| website = https://github.com/comfy/comfortable-mexican-sofa
}}
'''ComfortableMexicanSofa''', often shortened to ComfyCMS or Sofa, is an open source
content management system written in Ruby built as for Ruby on Rails Engine.
It was created when Ruby on Rails ecosystem had either monolithic CMS solutions
like RadiantCMS or very limited ones like ComatoseCMS.
Goal of ComfortableMexicanSofa is to provide content management without making
assumptions about Rails application that uses it. As a result it has very few
dependencies and can be easily extended with new functionality.
== Features ==
* Drop-in integration with minimal configuration.
* Content management without writing Rails code.
* Multiple sites from single installation.
* Multi-language support and page content localization.
* Content revision system
* Extendible admin area built with Bootstrap 4 for responsive design.
* Codemirror and Redactor WYSIWYG editor for content editing
* Initial content population can be handled with CMS Seeds that enables holding content under source control.
== Overview ==
Core functional elements of this CMS are: Sites, Layouts, Pages, Fragments, Snippets and
Files.
Sites allow you run mutiple sites from a single Rails app.
Layouts define Page structure. This is accomplished with Content Tag system
that replaces special tags with Fragments or other content. Here's an example of
a Layout:
<source lang="html">
<html>
<head>
<title>{{cms:text title}}</title>
<body>
<header>
{{cms:file header, as: image}}
</header>
<main>
{{cms:wysiwyg content}}
</main>
<footer>
{{cms:markdown footer}}
</footer>
</body>
</html>
</source>
Page holds content of Fragments defined in the Layout.
Snippets are pieces of content that can be reused anywhere in Layouts or Pages.
Files are attachments that can be used anywhere within CMS content, just like Snippets.
== The Name ==
Why ComfortableMexicanSofa? Because it's abbreviated to CMS. During initial
development it was briefly referred to as HaciendaCMS because it was worked on
during winter work retreat in Mexico. Name didn't stuck and for a while it
used random AdjectiveAdjectiveNoun that matched CMS. ComfortableMexicanSofa
stuck out and was chosen (CanadianMapleSyrup didn't come up, sadly). Because
this name is a mouthful, ComfyCMS or simply Sofa are often used as an alternative
name.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment