activeadmin-blog

Blog app on the top of activeadmin and mongoid.

Quick install

IMPORTANT: Make sure local mongodb instance is running.

Replace new_blog name with the real one and run:

export project_name=new_blog ; curl https://raw.github.com/alexkravets/activeadmin-blog/master/install.sh | sh

This command creates new rails project fully configured and ready for Heroku deploy.

Manual Installation

Start a new rails project

$ rails new appname -T -O

Setup and configure ActiveAdmin

Mongoid 2.x gem set

gem "bson_ext"
gem "mongoid",            '~> 2.0'
gem 'mongoid_search',     '~> 0.2.8'
gem "devise"
gem "activeadmin-mongoid"
gem "carrierwave-mongoid"
gem "activeadmin-blog"

# Assets
gem "aws-s3"
gem "fog"
gem "mini_magick"
gem "asset_sync"

Mongoid 3.x gem set

# Mongoid 3.x
gem 'moped',                git: 'git://github.com/mongoid/moped.git'
gem "mongoid",              "~> 3.0.5"
gem "mongoid_search"
gem "devise",               ">= 2.1.2"
gem "activeadmin-mongoid",  git: "git://github.com/elia/activeadmin-mongoid.git"
gem "carrierwave-mongoid",  git: "git://github.com/jnicklas/carrierwave-mongoid.git",
                            branch: "mongoid-3.0",
                            require: 'carrierwave/mongoid'
gem "activeadmin-blog"

# Assets
gem "aws-s3"
gem "fog"
gem "mini_magick"
gem "asset_sync"

Run following generators:

$ rails g mongoid:config
$ rails g devise:install
$ rails g active_admin:install
$ rails g activeadmin_settings:install
$ rails g activeadmin_blog:install blog

Create default admin user for activeadmin:

rake activeadmin:settings:create_admin

Run rails s blog should be accesible at http://localhost:3000/blog

Customizing blog views

Install default views templates to /app/views/blog:

$ rails g activeadmin_blog:views blog

Default style

By default blog is comming with a Twitter Bootstrap typography, to enable it add to Gemfile:

gem "twitter-bootstrap-rails", :git => "git://github.com/seyhunak/twitter-bootstrap-rails.git"

Install required bootstrap assets:

rails g bootstrap:install

Remove reuire_self line from application.js and application.css these are added by bootstrap intall and will break the layout with activeadmin styles.

In application.js include:

//= require bootstrap

In application.css include:

/*
    *= require bootstrap_and_overrides
    *= require_self
*/

// Tuning styles for kaminari pagination
.pagination .page.current {
  float:left;
  padding:0 14px;
  line-height:34px;
  text-decoration:none;
  border:1px solid #DDD;
  border-left-width:0;
  color:#999;
  cursor:default;
  background-color:whiteSmoke;
}
.pagination span:first-child, .pagination .first a { border-left-width:1px; }

Heroku

Mongoid

Configure local and production config/mongoid.yml settings to look like this:

development:
  host: localhost
  database: supercaliblog

test:
  host: localhost
  database: supercaliblog_test

production:
  uri: <%= ENV["MONGO_URL"] %>

Carrierwave

Create an S3 bucket for redactor image uploading feature and configure config/initializers/carrierwave.rb:

CarrierWave.configure do |config|
  config.cache_dir = File.join(Rails.root, "tmp", "uploads")
  config.storage = :fog

  config.fog_credentials = {
    :provider               => "AWS",
    :aws_access_key_id      => ENV["AWS_ACCESS_KEY_ID"],
    :aws_secret_access_key  => ENV["AWS_SECRET_ACCESS_KEY"]
  }

  case Rails.env.to_sym
    when :development
      config.storage = :file
    when :production
      config.fog_directory  = ENV["FOG_MEDIA_DIRECTORY"]
      config.fog_host       = "//#{ ENV["FOG_MEDIA_DIRECTORY"] }.s3.amazonaws.com"
      config.fog_attributes = {"Cache-Control"=>"max-age=315576000"}  # optional, defaults to {}
  end
end

Make sure you've set Heroku environtment variables:

FOG_MEDIA_DIRECTORY
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
MONGO_URL

Production assets

Add the following line to config/environments/production.rb:

config.assets.precompile += ["active_admin.js", "active_admin.css", "redactor/css/style.css"]

TODO

  • Admin blog post search;

The End