All Case Studies Design Development Interviews Our Way Project Management

CMS Comparison for Rails Apps

There are not many solutions for content management in Rails. We decided to take a look at Rails' popular gems and apps and decide if we should use any of them and if yes  - which one is the best.

Alchemy CMS

Pros:

  • Able to integrate with the existing rails app.
  • Looks like it’s easily extensible.
  • TinyMCE text editor - it’s proven to work in many projects.
  • Gives the ability to make only part of site to be CMS configured.
  • Easy to build new elements.
  • Nice UI.
  • Possibility to use both devise or alchemy-devise gem.
  • Uses relational SQL database through activerecord.
  • For each page there is the option to adjust simple SEO (tags for example, keywords).
  • It requires ImageMagick installed on server (it’s used for image transformations).

Cons:

  • Cannot use newest version of rails - dependencies are too tight for alchemy_cms and it just doesn’t work with rails 4.2.6. To work with rails 4.2.6 we have to use master branch and change dependency for web-console with bundle update afterwards.
  • Requires some learning (defining views through *.yml view, getting to know how it’s architecture looks like etc.).

Refinery CMS

Pros:

  • Standalone.
  • There is some support for adjusting SEO out of the box.

Cons:

  • Overriding views by using generators - doesn’t look too good but it works.
  • Adding functionalities to controllers looks like spree - class_eval on already existing controllers.
  • Sticks to "the Rails way" as much as possible; we don't force you to learn new templating languages.” - it has it’s downsides.

Locomotive CMS

Pros:

  • Couldn't really find anything besides the fact that it most likely works.

Cons:

  • Uses mongodb - that’s sad.
  • It looks way too complicated.
  • It appears to be open source but in fact it is not - if you need any support you need to pay Locomotive.
  • It looks more like a Wordpress competitor.
  • No option to integrate with already existing projects.

Scrivito CMS

Pros:

  • Always newest version of CMS because it’s cloud based.
  • Inline editing which can be quite cool for editors.
  • This is a PaaS CMS. It requires less work to integrate it into the project.

Cons:

  • Closed source.
  • No turbolinks support.
  • This is a PaaS CMS. All the data is stored in scrivito cloud (for pics I think they use AWS).
  • It’s paid. The cheapest subscription plan costs 19 USD/month, so not much, but it gives one working copy and up to 200 page objects.
  • Any data request goes to Scrivito cloud.
  • Really custom API - any dev trying to use it would need to learn quite a lot.


As you can see in the pros/cons above, there are only two real options for custom development: RefineryCMS and AlchemyCMS. BrowserCMS was also an option, but it hasn’t been updated in the past 2 years. Scrivito CMS can be a good solution, but it have couple of downsides. In a discussion on our Slack channels, AlchemyCMS came out as better solution and in my own research it’s also looks a lot better, yet it needs developer support in some cases. It’s actually quite a pleasure to work with it creating simple sites. Below I described some parts of using AlchemyCMS.

How to configure Alchemy CMS

This is pretty straightforward and you just should follow this guide here. It shows how to generate the app using alchemy gem or inject Alchemy CMS into existing rails app (while doing the latter remember to make sure that Alchemy CMS has the right User model and has the #alchemy_roles method - more about it here.

Alchemy CMS architecture

It’s described here.

How to create a simple new page:

Step 1

First, add new page layout to page_layouts.yml

- name: about

unique: true

elements: [article]

autogenerate: [article]

It relates to a new layout named “about” which can only be used once and it consists of article elements. There are a lot more options you can use to configure it, they can be found here.

Step 2

Open the admin panel and just get into the “Pages” section and create a new page under “Index” (which is root page for whole site). Let’s call it “About”.

Step 3

Voila! You should be redirected to editing of the “about” page. By default all new pages are not public so you can change it by going into “Page properties” which can be found on top in the navbar.

How to create custom new element:

This is pretty much all described in this guide.

Follow Netguru
Join our Newsletter

READ ALSO FROM Ruby/Ruby on Rails
Read also
Need a successful project?
Estimate project or contact us