Activeadmin Settings Cached
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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - 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