
Security News
Astral Launches pyx: A Python-Native Package Registry
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Flip provides a declarative, layered way of enabling and disabling application functionality at run-time.
This gem optimizes for:
There are three layers of strategies per feature:
There is also a configurable system-wide default - !Rails.env.production?` works nicely.
Flip has a dashboard UI that's easy to understand and use.
Rails 3.0, 3.1 and 3.2+
# Gemfile
gem "flip"
# Generate the model and migration
> rails g flip:install
# Run the migration
> rake db:migrate
# This is the model class generated by rails g flip:install
class Feature < ActiveRecord::Base
include Flip::Declarable
# The recommended Flip strategy stack.
strategy Flip::CookieStrategy
strategy Flip::DatabaseStrategy
strategy Flip::DefaultStrategy
default false
# A basic feature declaration.
feature :shiny_things
# Override the system-wide default.
feature :world_domination, default: true
# Enabled half the time..? Sure, we can do that.
feature :flakey,
default: proc { rand(2).zero? }
# Provide a description, normally derived from the feature name.
feature :something,
default: true,
description: "Ability to purchase enrollments in courses",
end
Flip.on?
or the dynamic predicate methods are used to check feature state:
Flip.on? :world_domination # true
Flip.world_domination? # true
Flip.on? :shiny_things # false
Flip.shiny_things? # false
Views and controllers use the feature?(key)
method:
<div>
<% if feature? :world_domination %>
<%= link_to "Dominate World", world_dominations_path %>
<% end %>
</div>
The Flip::ControllerFilters
module is mixed into the base ApplicationController
class. The following controller will respond with 404 Page Not Found to all but the index
action unless the :new_stuff feature is enabled:
class SampleController < ApplicationController
require_feature :something, :except => :index
def show
end
def index
end
end
The dashboard provides visibility and control over the features.
The gem includes some basic styles:
= content_for :stylesheets_head do
= stylesheet_link_tag "flip"
You probably don't want the dashboard to be public. Here's one way of implementing access control.
app/controllers/admin/features_controller.rb:
class Admin::FeaturesController < Flip::FeaturesController
before_filter :assert_authenticated_as_admin
end
app/controllers/admin/feature_strategies_controller.rb:
class Admin::FeatureStrategiesController < Flip::FeaturesController
before_filter :assert_authenticated_as_admin
end
routes.rb:
namespace :admin do
resources :features, only: [ :index ] do
resources :feature_strategies, only: [ :update, :destroy ]
end
end
mount Flip::Engine => "/admin/features"
Created by Paul Annesley Copyright © 2011-2013 Learnable Pty Ltd, MIT Licence.
FAQs
Unknown package
We found that flip_fork demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.
Security News
The latest Opengrep releases add Apex scanning, precision rule tuning, and performance gains for open source static code analysis.