All Projects → accessd → rails-settings-ui

accessd / rails-settings-ui

Licence: MIT License
User interface for manage settings in rails application (using rails-settings gem) / Интерфейс для управления настройками в Rails приложении

Programming Languages

ruby
36898 projects - #4 most used programming language
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to rails-settings-ui

Rime pure
【rime小狼毫\trime同文】手机/PC一站式配置【简约皮肤\拼音搜狗词库\原创trime同文四叶草九宫格拼音方案\四叶草拼音、小鹤双拼、极品五笔、徐码、郑码】 rime配置
Stars: ✭ 73 (-21.51%)
Mutual labels:  settings, configuration
Simple Settings
A simple way to manage your project settings.
Stars: ✭ 165 (+77.42%)
Mutual labels:  settings, configuration
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+2138.71%)
Mutual labels:  settings, configuration
Yamlsettings
Yaml Settings Configuration Module
Stars: ✭ 12 (-87.1%)
Mutual labels:  settings, configuration
JsonSettings
This library simplifies creating configuration for your C# app/service by utilizing the serialization capabilities of Json.NET to serialize nested (custom) objects, dictionaries and lists as simply as by creating a POCO and inheriting JsonSettings class.
Stars: ✭ 59 (-36.56%)
Mutual labels:  settings, configuration
Laravel Settings
Simple Settings package for a laravel application
Stars: ✭ 45 (-51.61%)
Mutual labels:  settings, configuration
Configuration
A module to help other modules have settings
Stars: ✭ 135 (+45.16%)
Mutual labels:  settings, configuration
Settings.net
⚙️ Settings.Net - An easy to use .NET library for accessing and storing settings and configurations.
Stars: ✭ 114 (+22.58%)
Mutual labels:  settings, configuration
cfg-rs
A Configuration Library for Rust Applications
Stars: ✭ 18 (-80.65%)
Mutual labels:  settings, configuration
setset
Powerful Incremental Type-driven Settings Engine.
Stars: ✭ 20 (-78.49%)
Mutual labels:  settings, configuration
Rails Settings
Manage settings with Ruby on Rails
Stars: ✭ 807 (+767.74%)
Mutual labels:  settings, configuration
config
Config component, strictly typed
Stars: ✭ 14 (-84.95%)
Mutual labels:  settings, configuration
Senparc.co2net
支持 .NET Framework & .NET Core 的公共基础扩展库
Stars: ✭ 289 (+210.75%)
Mutual labels:  settings, configuration
Ins sandstorm
[INS] Config setting for our sandstorm server
Stars: ✭ 61 (-34.41%)
Mutual labels:  settings, configuration
Dry Configurable
A simple mixin to make Ruby classes configurable
Stars: ✭ 280 (+201.08%)
Mutual labels:  settings, configuration
Django Dynamic Preferences
Dynamic global and instance settings for your django project
Stars: ✭ 238 (+155.91%)
Mutual labels:  settings, configuration
climatecontrol
Python library for loading settings and config data from files and environment variables
Stars: ✭ 20 (-78.49%)
Mutual labels:  settings, configuration
gconfigs
gConfigs - Config and Secret parser
Stars: ✭ 42 (-54.84%)
Mutual labels:  settings, configuration
eRCaGuy dotfiles
.bashrc file, terminal prompt that shows current git branch, Arduino setup, Eclipse setup, git diff with line numbers, helpful scripts, improved Linux productivity, etc.
Stars: ✭ 84 (-9.68%)
Mutual labels:  configuration
envkeygo
EnvKey's official Go client library
Stars: ✭ 36 (-61.29%)
Mutual labels:  configuration

Rails settings UI

Gem Version Build Status Code Climate Test Coverage

A Rails Engine to manage your application settings. Includes validation. Compatible with Rails 5. It compatible with rails-settings-cached gem.

Preview:

ScreenShot

Live example: http://rails-settings-ui.herokuapp.com/

How to

Add to Gemfile

gem 'rails-settings-ui'

then add

gem 'rails-settings-cached'

or

gem 'rails-settings'

or your fork of rails-settings.

If you want to use bootstrap interface you need also include bootstrap stylesheets to your app. You may use bootstrap-sass gem for that.

Setup:

# adds initializer and route:
rails g rails_settings_ui:install

Config

In config/initializers/rails_settings_ui.rb

RailsSettingsUi.setup do |config|
  config.ignored_settings = [:company_name] # Settings not displayed in the interface
  config.settings_class = "MySettings" # Customize settings class name
  config.settings_displayed_as_select_tag = [:mode] # Settings displayed as select tag instead of checkbox group field
  config.defaults_for_settings = {mode: :manual} # Default option values for select tags
  config.engine_name = "your engine name" # Default use 'main_app', if you mount this engine to another engine, then set name of engine
end

Routing

# engine root:
rails_settings_ui_url

I18n

You can localize:

  • Settings names, eg:
  settings:
    attributes:
      launch_mode: # setting name
        name: 'Launch mode'
  • Checkbox options labels for array options, eg:
  settings:
    attributes:
      launch_mode:
        labels:
          auto: 'Auto mode'
          manual: 'Manual mode'
  • Select options labels and values, eg:
  settings:
    attributes:
      buy_mode:
        labels:
          auto: 'Auto buy' # 'auto' is option value, 'Auto buy' is option label
          manual: 'Manual buy'

so result will be:

  <option value="auto">Auto buy</option>
  <option value="manual">Manual buy</option>

if you don't specify labels in locale config, you'll get:

  <option value="auto">auto</option>
  <option value="manual">manual</option>
  • Help blocks for settings, eg:
  settings:
    attributes:
      launch_mode:
        help_block: 'Rocket launch mode'

Validations

To validation work is required the default settings in the proper format, eg:

For rails-settings-cached up to 0.5.8:

class Settings < RailsSettings::CachedSettings
  defaults[:company_name] = "Company name"
  defaults[:head_name] = "Head name"
  defaults[:manager_premium] = 19
  defaults[:show_contract_fields] = true
  defaults[:launch_mode] = [:auto, :manual]
end

For rails-settings-cached with version >= 0.6.0 default settings moved to YAML config file (config/app.yml), so defaults should looks like:

  defaults: &defaults
    rocket_name: "Foo"
    limit: 123
    launch_mode:
      - auto
      - manual
    spaceports:
      - plesetsk
      - baikonur
    style:
      border_color: 'e0e0e0'
      block_color: 'ffffff'
      title:
        font: "Tahoma"
        size: "12"
        color: '107821'

  development:
    <<: *defaults

  test:
    <<: *defaults

  production:
    <<: *defaults

Views

Default layout is application, but you can render all rails-settings-ui views inside your app layout (for nice looking you will need include bootstrap, eg: @import 'bootstrap'; in your applications.css.scss):

Rails.application.config.to_prepare do
  # Use admin layout:
  RailsSettingsUi::ApplicationController.module_eval do
    layout 'admin'
  end
  # If you are using a custom layout, you will want to make app routes available to rails-setting-ui:
  RailsSettingsUi.inline_engine_routes! # old name of method inline_main_app_routes!
end

Authentication & authorization

You can specify the parent controller for settings controller, and it will inherit all before filters. Note that this must be placed before any other references to rails-setting-ui application controller in the initializer:

RailsSettingsUi.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'

Alternatively, to have custom rules just for rails-setting-ui you can:

Rails.application.config.to_prepare do
  RailsSettingsUi::ApplicationController.module_eval do
    before_filter :check_settings_permissions # for Rails 3
    before_action :check_settings_permissions # starting from Rails 4

    private
    def check_settings_permissions
      render status: 403 unless current_user && can_manage_settings?(current_user)
    end
  end
end

Issues

  • If you wish to use route helpers for your app in parent controllers of RailsSettingsUi::ApplicationController, you must call helpers for main_app, for example: main_app.root_path

This project uses MIT-LICENSE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].