Master repository has moved to gitlab, all new code will be there:
https://gitlab.com/rocket-science/rails_admin_settings
App settings editable via RailsAdmin with support for ActiveRecord and Mongoid.
Supports images, files, html with or without sanitization, code with codemirror, etc.
Add this line to your application's Gemfile:
gem 'rails_admin_settings'
For activerecord, generage migration:
rails g rails_admin_settings:migration
Then migrate:
rake db:migrate
And then execute:
$ bundle
Or install it yourself as:
$ gem install rails_admin_settings
Settings.admin_email = 'test@example.com'
Settings.admin_email
Settings.content_block_1(kind: 'html', default: 'test', label: "Test Value")
Settings.data(kind: 'yaml')
Settings.data = [1, 2, 3]
Settings.enabled?(:phone, kind: 'phone', default: '906 111-11-11') # also creates setting if it doesn't exist
Settings.phone.area
Settings.phone.subscriber
See more here: https://github.com/rs-pro/rails_admin_settings/blob/master/spec/advanced_usage_spec.rb
Settings can have namespaces (useful for locale, etc)
Settings.ns('test').s1 = 123
Settings.ns('test').s1
> "123"
Settings.ns('main').s1
> ""
Settings.s1
> ""
Settings.ns_default = 'test'
Settings.s1
> "123"
Settings.ns_default = 'main'
Settings.ns_fallback = 'test'
Settings.s1
> "123"
Supported types:
string (input)
text (textarea)
boolean (checkbox)
color (uses built-in RailsAdmin color picker)
html (does NOT sanitize (allows ANY javascript) - for trusted admin, supports Rich, glebtv-ckeditor, ckeditor, but does not require any of them)
code (does NOT sanitize (allows ANY javascript) - shows as codemirror, requires glebtv-ckeditor for codemirror)
sanitized (requires sanitize gem -- sanitizes HTML before saving to DB [Warning: uses RELAXED config!])
integer (stored as string)
yaml (requires safe_yaml)
phone (requires russian_phone)
phones (requires russian_phone - multiple phones)
email (requires validates_email_format_of)
address (requires geocoder)
file (requires paperclip or carrierwave)
url (requires addressable)
domain (requires addressable)
sanitize (uses rails sanitize helper with default settings, shows as html)
sanitize_code (uses rails sanitize helper with default settings, shows as codemirror textarea, can provide custom scrubber, defaults to Rails::Html::WhiteListSanitizer)
strip_tags (uses strip_tags rails helper)
simple_format (uses simple_format rails helper)
simple_format_raw (does NOT sanitize (allows ANY javascript) - uses simple_format rails helper with sanitize: false)
json
Sanitizer can be changed like this:
RalsAdminSettings.scrubber = Rails::Html::WhiteListSanitizer.new
defaults to Rails::Html::WhiteListSanitizer
Strings and html support following replacement patterns:
{{year}} -> current year
{{year|2013}} -> 2013 in 2013, 2013-2014 in 2014, etc
Sanitized types sanitize before storing to DB and not on display for performance. Simple format types are stored in db as-is.
Rails admin management for settings is supported out of the box
It is recommended to disable new/create page (it is not supported by design, settings are defined in ruby code). Disable via cancan:
cannot :create, RailsAdminSettings::Setting
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)