DEV Community

Discussion on: Who's looking for open source contributors? (October 15th edition)

Collapse
 
vinistock profile image
Vinicius Stock

Hey, folks.

Re-posting Sail, the Rails engine to bring settings functionality to control your application live.

Since my last two posts about Sail, we have received contributions from some members of the dev.to community. We have expanded the amount of setting types, enhanced the dashboard and added authentication configuration.

If you'd like to contribute, here are some possible starting points:

  • Enhancing the dashboard looks (pretty open to suggestions)
  • Suggesting new setting types

There are also a couple of things that feedback would be very useful:

  • Would it be interesting to implement a history of changes for settings for auditing purposes?
  • There are two new ideas of setting types needing feedback. We'd like to know if it is worth to implement these
    • File type: setting will return the contents of the file for a given path
    • URL type: setting will return true if the current controller request matches the configured URL

vinistock / sail

Sail brings settings to help you navigate your Rails application live

Maintainability Build Status Test Coverage Gem Version

Sail

This Rails engine brings a setting model into your app to be used as feature flags, gauges, knobs and other live controls you may need.

It can either serve as an admin control panel or user settings, depending on how you wish to apply it.

Installation

Add this line to your application's Gemfile:

gem 'sail'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sail

Adding the following line to your routes file will make the dashboard available at <base_url>/sail

mount Sail::Engine => '/sail'

Running the generator will create the settings table for your application.

$ rails g sail my_desired_migration_name

Which generates a migration to create the following table

create_table :sail_settings do |t|
  t.string :name, null: false
  t.text :description
  t.string :value, null: false
  t.integer :cast_type, null: false, limit: 1
  t.index ["name

Thanks, everybody!