Georgia

Gem Version Build Status Code Climate Coverage Status

Rails. Engine. CMS. Plug-and-play content management system for Ruby on Rails. Have a peak at the demo.

Features

  • Media library on the cloud
  • Spam filter on emails
  • Multilingual from the get-go
  • Review you pairs and draft new pages
  • Preview before publishing
  • Rollback to previous revisions when it hits the fan
  • Great UI, nice search, gravatars
  • Editable menus
  • Extendable
  • Widgets
  • Slides
  • Permission levels

Why? aka Comparison with refinerycms

  • Because diversity is good.
  • Because Georgia is a Rails Engine. You can add to an existing application.
  • Because it's prettier.
  • Because the guys on refinerycms did a great job and you should check them out.
  • Because it's easy to start a website and push to Heroku.

Getting started

Add Georgia to your Gemfile

gem 'georgia'

Make sure you have properly identify your default locale and possible available ones. Georgia uses available_locales to know which translations should be configured or not.

config.i18n.default_locale = :en
config.i18n.available_locales = [:en]

Then run the generator to mount routes, run migrations & setup initial instances.

rails generate georgia:install

We built Georgia to help you quickly develop an application with a CMS (Content Management System). However, we don't want to be in your way when you need to customize it.

rails generate georgia:views

Start your server (rails server) and go to http://localhost:3000/admin to get started.

Cloud Storage

Georgia's media library stores your documents and images on the cloud. You'll need to configure the solution that best fits your needs. Two options for you: Cloudinary or Custom Storage with Fog (e.g. Amazon S3, Rackspace Cloud Files)

Cloudinary

This will only work if you plan to have only pictures/images in your Media Library. Cloudinary won't work for .pdf files and other documents.

  1. Add cloudinary gem to your Gemfile.

    gem 'cloudinary'

  2. Set storage to :cloudinary in the config/initializers/georgia.rb file.

    Georgia.setup do |config|
      ...
    
      # Storage
      config.storage = :cloudinary
    end
    
  3. Open a Cloudinary Account

You can skip this step if you plan on using Heroku. Otherwise, take 10 seconds to open an account on Cloudinary if not already done. Download your cloudinary.yml file and add to your config folder.

Custom Storage

The georgia:install generator added a carrierwave.example.rb file to your initializers. Use it to configure your custom location.

Heroku

Georgia will run smoothly and cheaply (read free) on Heroku but you will need certain addons to make it work, all free.

Sengrid

Add sendgrid addon to handle emails

heroku addons:add sendgrid

Add sendgrid config to your production environment file

# Send emails via sendgrid
config.action_mailer.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com',
  :enable_starttls_auto => true
}

Bonsai

Add bonsai addon to handle elasticsearch

heroku addons:add bonsai

Add config/initializers/bonsai.rb with:

ENV['ELASTICSEARCH_URL'] = ENV['BONSAI_URL']

Create your elasticsearch indices with these commands:

*** After your first deploy *** You need tire installed on Heroku to perform this.

heroku run rake environment tire:import CLASS=Georgia::Page FORCE=true
heroku run rake environment tire:import CLASS=Ckeditor::Asset FORCE=true
heroku run rake environment tire:import CLASS=Ckeditor::Picture FORCE=true
heroku run rake environment tire:import CLASS=ActsAsTaggableOn::Tag FORCE=true

Cloudinary

Add cloudinary addon to handle media library cloud storage

heroku addons:add cloudinary

Create your admin user

Finally, create your first admin user to access to web panel:

heroku run rake georgia:seed

For more information, you can also follow these instructions to setup bonsai.io. More here on heroku.com