web47core

Core components used commonly among all web apps for both App47 and RedMonocle

Requirements

  • Ruby 2.4.1

Working with Bundler and RVM

This project manages Ruby versions via RVM and manages dependencies via Bundler.

You must first install RVM. Then install Ruby 2.4.1 (version 2.4.1-p111) via RVM.

rvm install 2.4.1

You'll now notice that this project (as well as other App47 ones) contains a .rvmc file, which is executed upon opening the project's root directory in a terminal (and IDE's like RubyMine). The .rvmc file simply states rvm ruby-2.4.1 which tells RVM to ensure the Ruby version to use for this project is 2.4.1.

Please note, your Ruby 2.4.1 version might need bundler installed:

gem install bundler -v 1.17.3

To set up this project's dependencies, which are defined in the file, Gemfile, you should first run

bundle install --path vendor

The --path vendor simply puts all gem files in a vendor directory.

Development

Your RubyMine environment should be setup now, however to verify all is well, please run the test suite

bundle exec rake test

Deployment

The web47core project is a gem that will be deployed via Ruby Gems. When an update is ready, the following steps should be followed

  1. Build the gem gem build web47core.gemspec
  2. Push the new gem to Ruby Gems gem push web47core-<<version>>.gem
  3. There may be a delay when using the gem file

Usage

Importing the gem

To use the app47core gem in a project, first add the gem to your Gemfile in one of two ways

Using the gem from Ruby Gems

gem 'web47core'

If you need the gem immediately or need to pull from development branch, you can use the git repo

gem 'web47core', git: '[email protected]:App47/web47core.git', branch: :master

or from the develop branch

gem 'web47core', git: '[email protected]:App47/web47core.git', branch: :develop

Please do not ship to production code using the git repo, as the production servers will not have keys to pull from the web47core repo

Features

Models

Concerns

  1. StandardModel - Includes the common set of includes, Mongoid, Auditable, AutoClearCache, etc.
  2. CdnUrl - Provide CDN URLs of your classes URLs when cdn_url is configured in system configuration
  3. AutoClearCache - Clears your objects cache out of Rails.cache using the object's id

System Configuration

Define a SystemConfiguration class in your project and import the core concern.

class SystemConfiguration
  include StandardModel
  include CoreSystemConfiguration
  
  # Include your additional system configuration fields and methods
  field :google_sso_client_id, type: String
end