Bp3::Core

bp3-core provides core concerns for BP3, the persuavis/black_phoebe_3 multi-site multi-tenant rails application.

Installation

Add this line to your application's Gemfile:

gem 'bp3-core'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install bp3-core

Usage

In all controllers (or their base class), add

include Bp3::Core::Actions
include Bp3::Core::Cookies

In ActiveRecord models(or their base class) that are displayed to users, add:

include Bp3::Core::Displayable

In models, controllers, services and helpers that use feature flags, add:

include Bp3::Core::FeatureFlags
include Bp3::Core::Settings

In ActiveRecord models (or their base class) that are filtered/sorted with ransack, add:

include Bp3::Core::Ransackable

Then in your application's config/initializers/bp3-core, add:

Bp3::Core::Ransackable.attribute_exceptions = %w[config config_id settable settable_id]
Bp3::Core::Ransackable.association_exceptions = %w[config settable]

In all ActiveRecord models (or their base class) with a request-id attribute :rqid, add:

include Bp3::Core::Rqid

Then in your application's config/initializers/bp3-core, add:

Bp3::Core::Rqid.global_request_state_class_name = 'GlobalRequestState'
Bp3::Core::Rqid.global_request_state_method = :request_id

In all ActiveRecord models (or their base class) with a sequence number attribute :sqnr, add:

include Bp3::Core::Sqnr

To use :sqnr for record ordering for a particular model, use the class macro:

use_sqnr_for_ordering

In all ActiveRecord models (or their base class) that use site, tenant and/or workspace attributes that need to be populated from global state, add:

include Bp3::Core::Tenantable

The specific columns expected by Tenantable are:

  • site: sites_site_id
  • tenant: tenant_id
  • workspace: workspaces_workspace_id Tenantable will use reflection to determine which one(s) exist, and will create associations and callbacks accordingly.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run rake install. To release a new version, update the version number in version.rb, and then run rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Testing

The Bp3::Core::Test class is for testing purposes.

Run rake to run rspec tests and rubocop linting.

Documentation

A .yardopts file is provided to support yard documentation.

License

The gem is available as open source under the terms of the MIT License.