artofhuman / activeadmin_settings_cached

UI interface for rails-settings-cached in active admin
MIT License
56 stars 41 forks source link
activeadmin rails ruby settings

Activeadmin Settings Cached

Gem Version Build Status Coverage Status

Provides a nice UI interface for rails-settings-cached gem in Active Admin.

Installation

Add this line to your application's Gemfile:

gem 'activeadmin_settings_cached'

And then execute:

$ bundle

Create your settings model:

$ rails g settings:install
$ bundle exec rake db:migrate

Create your settings page:

# From generators                   
$ rails g active_admin:settings Setting  

# Or manual
# app/admin/setting.rb
ActiveAdmin.register_page 'Setting' do
  title = 'Settings'
  menu label: title

  active_admin_settings_page(
    title: title
  )
end

And configure your default values in your Settings model:

class Settings < RailsSettings::CachedSettings
  defaults[:my_awesome_settings] = 'This is my settings'
end

In your application's admin interface, there will now be a new page with this setting

active_admin_settings_page DSL

Basic usage

ActiveAdmin.register_page 'Settings' do
  menu label: 'Settings', priority: 99
  active_admin_settings_page options
end

Options

Tool Description
:model_name String, settings model name override (default: uses name from global config.)
:starting_with String, each key must starting with, (default: nil)
:key String, Symbol root key, can be replacement for starting_with, (default: nil)
:template String, custom template rendering (default: 'admin/settings/index')
:template_object object passing to view (default: ActiveadminSettingsCached::Model instance)
:display Hash, display settings override (default: {})
:title String, title value override (default: I18n.t('settings.menu.label'))
:after_save Proc, callback for action after POST request, (default: nil)

Localization

You can localize settings keys in local file

en:
  settings:
    attributes:
      my_awesome_settings: 'My Awesome Localized Setting'

Model name

By default the name of the mode is Setting. If you want to use a different name for the model, you can specify your that in config/initializers/active_admin_settings_cached.rb:

ActiveadminSettingsCached.configure do |config|
  config.model_name = 'AdvancedSetting'
end

Display options

If you need define display options for settings fields, eg textarea, url or :timestamp and etc., you can set display option in initializer.

ActiveadminSettingsCached.configure do |config|
  config.display = {
    my_awesome_setting_name: :text,
    my_awesome_setting_name_2: :timestamp,
    my_awesome_setting_name_3: :select
  }
end

Available options see here

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

How run local example

make bash
make setup
cd spec/rails/rails-5.1.7/
BUNDLE_GEMFILE=/app/gemfiles/rails5.1.gemfile bundle exec rails s -b 0.0.0.0