The decision of what tools you use for any task tends to have a huge impact on your work, time and final results. Before using the most popular solution, it’s a good idea to do at least basic research on your other options. I’ll show you a good alternative for many CMS apps built in Ruby – RefineryCMS. You might find basic information on the subject in our previous article, CMS Comparison for Rails App, but this time I’ll go into more details and answer the following question: ‘is Refinery worth using at all?’ How can we compare it to the most popular competitors like WordPress, Joomla or Drupal?
Before we start, you should know some basics about CMS. It’s an abbreviation for Content Management System and it describes all applications used to create or modify digital content. It might be used for writing and publishing blog posts (like this one!) or creating your personal webpage. You can also use CMS apps for your business. Apps like this might serve as tools to interact with your customers, share knowledge about your new ideas or even as e-commerce solutions.
Setup and Core Functionalities
Currently, the stable version is 3.0.5 (but 4.0 is going to be released soon). I’ll review the newest but not production-ready edge version. The basic setup has been extensively documented in the official guides, so I won’t cover it here in too much detail.
There are two ways of using RefineryCMS: as a part of an existing Rails project or as a standalone app.
Either way, we’ve got some standard plugins:
refinerycms-authentication-devise – contains implementation of simple users’ authentication;
refinerycms-wymeditor – adds support for a visual editor used to create posts;
refinerycms-acts-as-indexed – adds support for searching inside Refinery's admin interface.
The core functionality, pages management, which excludes the most common features like using a WYSIWYG (what you see is what you get) editor for creating static content, allows you to:
upload files with special support for images;
define an extra content hierarchy (main pages, subpages);
add some meta data used by search engines to increase the visibility of your page;
set a template to define what layout for the pages you want to use;
set the visibility of the pages in the main navigation for the most important content;,
set the URL redirections for some subpages.
There are also some configuration settings not available in the admin panel by default but pretty easy to enable in the code, like:
defining credentials for Google Analytics integration to let you know about the most popular content and behaviour of your virtual visitors;
adding translations for the resources available on the pages.
OK, that looks quite interesting, but is there something more to it? Let’s find out!
Customization and Extensions
To be honest, the default look of the pages is just awful. However, there’s a solution (mentioned in the documentation): RefineryCMS sticks to the Rails way as much as possible, so changing the layout of the pages is very easy but it requires at least basic Ruby on Rails skills.
The architecture is quite flexible so implementing some changes or extra functionalities shouldn’t be hard for a Ruby developer. However, if you don’t have the time or programming skills to write customized functionalities, there are some extensions you might add to the app. The most common ones are listed here. Let’s go through the list and check what possibilities might be especially interesting for you:
Blog – an official extension that allows you to add functionalities necessary to manage a blog, like adding posts, sending commenting, and performing simple moderation;
Inquiries – a plugin that allows you to add a simple contact form to Refinery, which notifies both you and the customer when an inquiry is made. It’s possible to collect basic data, specify who is to be notified when a new inquiry comes in, and to set up a customized autoresponder email that is sent to the person making the inquiry;
Products – an engine for product management. You can define some products with basic properties and categories (with nested categorization) and display them on selected pages.
There are a lot of extensions but, unfortunately, most of them are not up-to-date, so using them for the edge version wasn’t possible. Hopefully, this will be changed soon with the new release, because some of the listed plugins, like the Spree platform integration (read our article: Why Spree is a Good Choice for You and find out what Spree is), might be very useful for e-commerce companies.
So, is RefineryCMS worth using? That’s a very difficult question. It’s a Ruby app and it follows the Rails convention, which might be the biggest advantage for some users (especially Ruby developers). Are there any Ruby-based apps in your portfolio? Great! There are numerous opportunities to connect them with Refinery and gain new ways to improve your business. On the other hand, while Refinery is maintained by its team, the development of version 4.0 and the extensions could be a bit quicker. We cannot compare the popularity of this app to the very well-known competitors like Joomla or Wordpress now, but, hopefully, the planned 4.0 version will make it bigger.