CloudBees Feature Management - Ruby changelog

CloudBees Feature Management is an advanced feature flagging solution that lets your development teams quickly build and deploy applications without compromising on safety. By providing a gradual release mechanism and a simple way to define target audiences, CloudBees Feature Management allows developers and product managers to optimize feature releases and customize the user experience. CloudBees Feature Management gives teams control over features that are in staging, production, or any environment in the deployment pipeline.

May 8, 2023: V5.1.1

  • Fixed static api number flags evaluation type to be container.numberFlag.value → int (not container.numberFlag.value → string).

April 27, 2022: V5.1.0

  • Added analytics

January 4, 2022: V5.0.3

  • Fixed use_userspace_unhandled_error_handler

  • Removed wrong analytics implementation

2021-11-10: V5.0.2

  • Added Rox::Server::RoxServer.register_with_namespace to register containers with a namespace.

  • Bugfix: Resolved internal hash inconsistency used by network requests - minimizing network traffic.

2021-05-05: V5.0.0

Breaking changes:

  • Variant changed to RoxString

    • Rox::Server::Variant.new('default_string', ['string_1', 'string_2']) ⇒ Rox::Server::RoxString.new('default_string', ['string_1', 'string_2'])

  • Functions input validations

    • Some trivial parameters (mostly type) validations were added to dynamic_api and flags constructions. For example: Rox::Server::RoxString.new(nil) will raise an ArgumentError as default cannot be nil (default value of RoxString should be a string and defaults to an empty string if no default is provided). Rox::Server::RoxServer.dynamic_api.value(nil, 'default_string', ['string_2', 'string_3']) will raise an ArgumentError because of nil flag name (name should always be a string) Fixes and Additions:

  • Can use register without a namespace:

    • register(container) will register the container under an empty string namespace (multiple register calls with the same namespaces are still not allowed!)

  • Added a User Space Error handling

    • It is recommended to wrap all handlers used in Rox platform with begin-rescue in order to be in the right context. In case there will be an uncaught error, it will reach the Rox::Server::RoxServer.use_userspace_unhandled_error_handler handler. You can use this handler for debugging, or for further error handling. An Error thrown within this handler will be written to log. If no use_userspace_unhandled_error_handler was set, errors will be written to the log.

  • Analytics / impressions

    • Starting with SDK 5, flags will always send impressions after setup (not only when targeting is enabled on the dashboard)

  • Impression handler parameters change

    • As experiments were removed, impressions handler signature was changed from (reporting_value, experiment, context) to (reporting_value, context). reporting_value now also has a Targeting (boolean) property, indicating the flag was evaluated by using the dashboard configurations.

  • New Flag Types Int/Double

    • In addition to RoxFlag and RoxString, we also added RoxInt and RoxDouble

    • DynamicApi was also updated with matching get_int and get_double methods

  • Added a graceful Rox.shutdown

    • In order to clean all background Tasks

    • multiple Rox.setup calls will be ignored if Rox wasn’t Shutdown in between

  • Fixing RegEx Match condition, and empty string values

2020-01-09: V 4.7.3

  • Bugfix: Fix a skipped state synchronization that could occur if Ruby execution was halted immediately after SDK initialization

2019-11-26: V 4.7.2

  • Improvement: local flag state is now synced upon initialization instead of waiting until the first local change

2019-11-19: V 4.7.1

  • Bugfix: local flag states somewhere would be rejected by the API server

2019-10-15: V 4.7.0

  • Server API version 1.8.0

  • Values are base64 - fixing " and () bug

  • Changes to API calls, using Cloudfront

2019-05-14: V 4.1.0

  • Added push updates support

  • Variants are open for any value from the dashboard

  • Dynamic API for flags

2018-10-07: V 4.0.0

Initial release