knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
In this document the process of implementing custom feature flags is presented. In the subsequent sections we will create a feature flag that is enabled if it's number
field is odd.
Each feature flag requires 1 function to be implemented:
is_enabled.<FEATURE_FLAG>
- S3 method computing whether the feature flag is enabledHowever, it is recommended to additionally include:
create_<YOUR_FEATURE_FLAG>_feature_flag
- function that creates an instance of your feature flag (note: this function can be called however you want, this is just a suggestion)
is_<YOUR_FEATURE_FLAG_NAME>
- function that returns TRUE if the passed object is an instance of the feature flag class (that we are currently defining)
Let's start with a construction method that will use create a base feature flag, add the number
field to it and assign it to the proper class.
library(featureflag) create_odd_feature_flag <- function(number) { flag <- create_feature_flag() flag$number <- number class(flag) <- c("odd_feature_flag", class(flag)) flag }
Next, we will create a function checking the class attribute of the object.
is_odd_feature_flag <- function(feature_flag) { inherits(feature_flag, "odd_feature_flag") }
Finally, we define the is_enabled
function which checks whether the number
field of our flag is odd.
is_enabled.odd_feature_flag <- function(feature_flag) { stopifnot(is_odd_feature_flag(feature_flag)) (feature_flag$number %% 2) != 0 }
Now, let's test if everything is working
my_odd_feature_flag <- create_odd_feature_flag(number = 3) if (is_enabled(my_odd_feature_flag)) { print("The feature flag is on!") }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.