CMS based on modules as Rails 4 engines
JavaScript Ruby HTML CSS Gherkin
Latest commit 6690ebd Dec 6, 2017 @donni106 donni106 Add ability to render widgets without wrapper
Use option `wrapper: ""` in helper method:

`<%= render_article_widgets(tagged_with: "page-head", wrapper: "", default: true) %>`
Failed to load latest commit information.
.yardoc - modified: app/models/goldencobra/redirector.rb Feb 10, 2015
admin Show current_users auth_token in backend Nov 6, 2017
app Add ability to render widgets without wrapper Dec 6, 2017
config Merge pull request #102 from ronachera/show-warning-if-descendants Oct 18, 2017
db Introduce safe guard for migrations again Jan 31, 2017
doc Add ability to render widgets without wrapper Dec 6, 2017
lib Add ability to render widgets without wrapper Dec 6, 2017
script new rails app as mountable engine Jan 18, 2012
test Merge pull request #102 from ronachera/show-warning-if-descendants Oct 18, 2017
.codeclimate.yml Exclude vendor js from all codeclimate engines Jan 30, 2017
.csslintrc Add codeclime ignore directives Jan 30, 2017
.eslintignore Ignore certain JS files Jan 30, 2017
.eslintrc Fix eslint conf Jan 27, 2017
.gitignore Minor adjustments for TravisCI Jan 27, 2017
.hound.yml Configure HoundCi to use ikusei Ruby style guide Feb 3, 2016
.rspec testing Jun 3, 2014
.rubocop.yml Shorten cache key generation for over-view tree Jan 30, 2017
.scss-lint.yml Add linter files Jan 27, 2017
.travis.yml Use 2.3.1 for Travis-CI Oct 13, 2017
CC-LICENSE metatags and url struckture rewritten Jan 20, 2012 Update Oct 23, 2017 Update Oct 23, 2017
Gemfile Add mysql2 gem explicitly Oct 13, 2017 Create issue template for GitHub Oct 18, 2017 Create pull request template for GitHub Oct 18, 2017
README.markdown Update README.markdown Jan 30, 2017
README_ENGINE url prefix vor domains Sep 25, 2013
Rakefile new version Dec 3, 2012
UPGRADING post install message aktualisiert Aug 11, 2015 Update Readme and dev installation instructions Feb 8, 2016
goldencobra.gemspec Update Gemfile and goldencobra.gemspec May 18, 2017



Test Coverage Code Climate

Powered by

  • ActiveAdmin

Current Versions

1.5.x (branch: release/1.5) 2.0.x (branch: master)


  • Ruby 2.2+
  • Rails 4.2+
  • Mysql 5.x (tested with e.g. 5.7.10)


This installation is meant for using Golden Cobra as a gem inside your Rails application. If you would like to contribute to Golden Cobra development, please read this document => Installation instructions for development.

Guided Installation wit rvm,git,capistrano and server deploy

rails new PROJECTNAME -m -d mysql

Manual Installation: Create new project

rails new PROJECTNAME -d mysql

Install Goldencobra gem

Add the following to file "PROJECTNAME/Gemfile":

gem 'goldencobra', git: 'git://'
gem 'activeadmin', :git => 'git://', :require => 'activeadmin'
bundle install

Create database

rake db:create

Install prerequisites for Goldencobra

rake goldencobra:install:migrations
rails generate goldencobra:install
rake db:migrate db:test:prepare

If you want to use goldencobra in a subdirectory

(, please modify your config/routes.rb and setup your domains in "Settings > Domains" in the backendinterface

Goldencobra::Domain.pluck(:url_prefix).each do |url_prefix|
    scope url_prefix do
        devise_for :users, ActiveAdmin::Devise.config
        mount Goldencobra::Engine => "/"

Setup Goldencobra

If you want to use Batch Actions in Goldencobra (set a batch of articles offline), you need to uncomment the line # config.batch_actions = true in config/initializers/active_admin.rb

This would also be the place where you can override stylesheets and javascripts. Just put them inside the block # == Register Stylesheets & Javascripts.

Create new article types

Nearly every site in Goldencobra is an article. If the default article isn't enough for your needs you can create new article types. There's a generator for that: rails generate goldencobra:articletype Thing name:string

Where "Thing" would be your associated model and "name:string" are the usual ruby attributes.

This will create:

    generate model Thing # Your associated model
    generate /app/views/articletypes
    generate /app/views/articletypes/thing # View folder
    # Necessary view files
    generate /app/views/articletypes/thing/_index.html.erb
    generate /app/views/articletypes/thing/_show.html.erb
    generate /app/views/articletypes/thing/_edit_show.html.erb
    generate /app/views/articletypes/thing/_edit_index.html.erb

The index and show partials are for fronted display of your article type. The "_edit" partials are for the ActiveAdmin.

"Index" is always the index view of articles of this article_type. The _edit_index enables you to set certain tags to filter your index view. Of course everything is customizable by you.

"Show" is an individual article of this article_type. The "_edit_show" gives you control over the models attributes.


We have a quite flexible settings system in place. In the admin backend you have many values you can customize for your installation.

Important values are

  • Goldencobra-Facebook-AppId
  • Goldencobra-url (should be set without http:// in front)
  • Commentator: If you have a different frontend user model (like 'Visitor') you can set this here. Default is User.
  • Bugherd: If you use for tracking frontend problems for your website you should enter the project's API key here. You can further decide wich User should be logged in to be able to track bugs.
  • You have can enable or disable Solr Search Server and decide wether you want to recreate all menues and widgets after updating them. This might be useful for caching.

When creating articles, a default value is set for open graph image url. Please make sure you provide a default open graph image at "/assets/open-graph.png"


Basic Headers

call in head-section of any view_template to include stylesheets, javascripts (jquery, jqueryui, ...), bugtracker, metatags, airbrake and article_administration element:


# option: {:exclude => ["stylesheets", "javascripts", "bugtracker", "metatags", "article_administration", "airbrake"]}


<%= basic_goldencobra_headers(:exclude => ["javascripts","stylesheets"]) %>

##Only Activate Bugtracker in Application Layout place this code in your application layout in header section: <%= bugtracker %>

Navigation Menu

call in any view_template:

navigation_menu(menue_id, option={})

# option: { depth: integer }
# 0 = unlimited
# 1 = self
# 2 = self and children 1st grade
# 3 = self and up to children 2nd grade
# default = 0

example: renders menue starting with id 1 and only childs of first grade

<%= navigation_menu(1, :depth => 1) %>

renders menue starting with id 2 and all children as a nested list

<%= navigation_menu(2) %>

renders menue starting with first Menuitem including title 'MainNavigation' and all children as a nested list

<%= navigation_menu("MainNavigation") %>

renders menue starting with first Menuitem including title 'MainNavigation' in the submenue 'Sub' and all children as a nested list

<%= navigation_menu("Sub/MainNavigation") %>

renders menue starting with first Menuitem including title 'MainNavigation' in the submenue 'de' or 'en' depending of your current Locale and all children as a nested list

<%= navigation_menu("#{I18n.locale.to_s}/MainNavigation") %>
<%= navigation_menu("Top-Menue", :submenue_of_article => @article, :class => "ul_submain_nav", :depth => 2, :show_image => false, :show_description_title => false, :show_description => false, :show_call_to_action_name => false) %>

Switching Languages

<%= link_to "Deutsch", switch_language("de") %>
<%= link_to "Englisch", switch_language("en") %>

Named routes outside mounted rails engine

You can call any named route defined in your railsapp inside a goldencobra_view by calling:

  <%= link_to "CustomRoute", application_routes.custom_page_path() %>

Breadcrumb Menue

in your view_templates:

    <%= breadcrumb() %>

Rendering content in layouts

<% # Renders contents of different article types %>
<% if @article %>
  <%= render_article_type_content() %>
<% end %>

<%= yield(:article_content) %>
<%= yield(:article_title) %>
<%= yield(:article_subtitle) %>
<%= yield(:article_teaser) %>

Render widgets

Alle DefaultWidgets UND alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

render_article_widgets(default: true, tagged_with: "sidebar")

Alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(default: false, tagged_with: "sidebar") %>

Alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(tagged_with: "sidebar") %>

Alle DefaultWidgets und alle ArtikelWidgets:

  <%= render_article_widgets(default: true) %>

Alle ArtikelWidgets:

  <%= render_article_widgets() %>

Alle DefaultWidgets:

  <%= render_article_widgets(article: false) %>

Alle DefaultWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(article: false, tagged_with: "sidebar") %>

Alle Optionen mit Defaultwerten:

  <%= render_article_widgets(default="false", article="true", tagged_with: "") %>

Render Login and Registration Widgets

in your view_templates:

    <%= render_login_widget(User) %>
    <%= render_login_widget(Visitor) %>
    <%= render_registration_widget(User) %>
    <%= render_registration_widget(Visitor) %>

Include social media sharing buttons where applicable

<div id="social_sharing_buttons" class="bottom_buttons">
  <%= yield(:social_sharing_buttons) %>

Render an image gallery inside article content

<%= render_article_image_gallery %>


See the CONTRIBUTING document. Thank you, contributors!


This project uses CC BY-NC-SA 3.0. See License


Goldencobra is maintained by ikusei GmbH in Berlin. We like you.